🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #24076

JavaСӦ�ó����еĶ������� (fwd)

#24076
From: ��
Date: Sat, 20 Jun 1998 00:00
201 lines
11179 bytes

������: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ), ����: Programming
��  ��: JavaСӦ�ó����еĶ�������
����վ: nju_bbs (Sat Apr 18 22:51:28 1998)
ת��վ: lifebbs!cstshnews!ustcnews!nju_bbs

  Java�����ܳ�ΪInternet�е�"������",ԭ��֮һ������п�����
ý��СӦ�ó���(App let)������������������Java��ʵ�ֶ����Ļ�
������,�����д衣
    Java����ԭ��
    Java��ʵ�ֶ����Ļ�ԭ��ͬ����ļ����������û��ʲô
���ʲ�ͬ,���Ǻ��ֻ涯����ͨԭ��һ��,����һϵ�е�֡,��������
���Ӿ���ͣ������˶��ĸо�������������, ����ͼƬ����ĺû���
,�����ж�����ƽ���̶�Ҳ��һ��ؼ�򵥵�˵,ͬһʱ���ڷ�ӳ��
ͼƬ����Խ��,�����еĶ���Ҳ��Խƽ����
    һ���ֻ涯��1���ӷ�ӳ��ͼƬ����Ӵֲڵ�8�ŵ��еȵ�12��,
ֱ����߼���24�Ų���,������һ�㶼��ÿ��10��20�š����,
���Ҫд����ӳ������JavaСӦ�ó���,���Ⱦ�Ҫ����������ӳ����
��,��׼��������Ҫ��ӳ�Ķ���ͼƬ��
    ����ͼƬ,����Ҫ����ͼƬ��ݡ���Java��,��������getImage��
��,��ָ����URLλ�ö���Ҫ��ӳ��ͼƬ�����ڶ������õ���ͼƬһ��
�Ƕ���,Ϊ�˴��?��,���������������ЩI mage����ͬʱ,Ϊ��
�ܹ������׵���һ��ѭ����ͼƬȫ������,ͼ���ļ����ļ���ҲӦ��
��������á�
    ����,���һ��׼����24��ͼƬ,�ļ���Ϳ�ȡΪpic0.gif��pic1
..gif��pic2.gif��������pic23.gif,��������ȫ��������СӦ�ó���
Ŀ¼�µ� images Ŀ¼���ȡͼƬ�ij�������:
    Image frame[]= new Image[24];int i;for (i = 0; i<frame.l
ength; i++)frame[i]  = getImage(getCodeBase( ),"images/pic"+
i+".gif");����һ���������Ҫ���ƶ�����ӳ���ٶȡ��������Java
�Ķ��̹߳�����ʵ��,����һ���̸߳�������ķ�ӳ��̡�����,����
��дһ��С����pause,��Thread.sleep���ﵽ��ʱЧ��:
     void pause (int delay_ time)  try{Thread.sleep(delay_ t
ime);}  catch(Inter rupted Exception e) {}����,delay_ time��
����ͼƬ�������ʱ��(΢��)����Ҫʹ��ÿ���ӷ�ӳ��ͼƬ��(֡)��
����ʾ,�ɰ���ʽת��:delay_ time=1000/frame_ per_ second;ʵ��
�̵߳ķ���������:һ���Ǵ���һ��Thread���������,��һ���Ǹ���
һ��Runnable�Ľ����ϡ�������ѭ������paint�е������Ǵ����,��
���ռ������AWT(Abstract Windowing Tool kit)���߳�,�����߳�
Ӧ�������еĻ�ͼ���¼����?
    �ڱ�����,�����ȹ���һ������Ŀ��,��������չ,ʹ֮���ܱ�
���뱸��ͨ������Ĺ��,�Ϳ��Ի�����Java������������Ҫ����
�ˡ�

    һ�����СӦ�ó���
    ������϶���ԭ��,���Ա�дһ�����СӦ�ó���
    import java.awt.*;public class Animator1 extends java.ap
plet.Applet impleme nts Runnable
    int frame;
    int delay;
    Thread animator;
    public void init() {
        String str = getParameter("fps");
        int fps=(str != null) ? Integer.parseInt(str):10;
        delay = (fps > 0) ? (1000 / fps) : 100;
    }
    public void start() {
        animator = new Thread(this);
        animator.start();
    }
    public void run() {
        while (Thread.currentThread() == animator) { 
       repaint();

       try {Thread.sleep(delay); }

       catch (InterruptedException e) {break;} 
       frame++;
        }
    }
    public void stop() {

       animator = null;
    }��HTML�ļ��п������������������:
      <applet code=Animator1.class width=200 height=200>   <
param name=fps valu e=200>   </applet>���еIJ���fps��ʾÿ��
��ӳͼƬ��֡��
    ���ֺ㶨��֡�ٶ�
    ������Ŀ�ܳ�����, СӦ�ó�����ÿ��֮֡������һ���̶���
ʱ�䡣 ������ȱ���, ��ʱ��Ҫ�ȴ�ܳ�ʱ�䡣��������ʱҲ�ķ�
һ����ʱ��,����Ϊ��ÿ����ʾʮ֡ͼ��,��Ӧ�ù̶�������֡������
100���롣
    һ���򵥵IJ��ȷ�������:
    public void run() {
    long tm = System.currentTimeMillis();
    while (Thread.currentThread() == animator) {
        repaint();
        try {

      tm += delay;
       Thread.sleep(Math.max(0,tm - System.currentTimeMillis
())); 
      }
        catch (InterruptedException e) {break;}
        frame++;
    }

    ����ÿһ֡
    Ϊ�˲���Ч��,��Ҫ��ÿһ֡ͼƬ������������ʾ���е�
����repaint()���������ÿһ֡ͼƬ����ʵ��Ҳ�������»���:
    public void paint(Graphics g) {
    g.setColor(Color.black);
    g.drawString("Frame " + frame, 0, 30);

    ͼ�ε����
    �������õ���ͼƬ�����ü������ɡ����������һ����������
�����,����ÿһ������x��һ��������,ȫ���������һ��ͼ��,����
ÿ֡ͼ�β�����ͬ��
    public void paint(Graphics g)
    Dimension d = size();
    int h = d.height / 2;
    for (int x = 0 ; x < d.width; x++) {
     int y1 = (int)((1.0 + Math.sin((x - frame) * 0.05)) * h
);
      int y2 = (int)((1.0 + math.sin((x + frame) * 0.05)) * 
h);
     g.DrawLine(x, y1, x, y2);
    }

    ��˸�ı���
    ��������Ƶ�ͼ����Щ��˸,��ԭ��������:һ�ǻ���ÿһ֡����
��ʱ��̫��(��Ϊ�ػ�ʱҪ��ļ������ϴ�),������ÿ�ε���paint()
 ǰ������������,�ڽ�����һ֡�ļ���ʱ,�û��������DZ�������
��ͻ���ͼ�μ�Ķ���ʱ�䱻�û�����,������˸����PC����˸
����X Window������,������ΪX Window��ͼ�񱻻����,ʹ����˸��
ʱ��Ƚ϶̡�
    �����ְ취�������Եؼ�����˸:����update() ��ʹ��˫���塣
    1.����update()��AWT���յ�һ��СӦ�ó�����ػ�����ʱ,���
����Applet��update ()����Ĭ�����,update() ���СӦ�ó����
����,Ȼ�����paint()������update(),����ǰ��paint() �еĻ�ͼ
�������update()��,�Ӷ����ÿ���ػ�ʱ�������������
�����Զ������Ҫ��update() ����ɡ��ڻ�������֮ǰ�����߲���,
����ȫ�������˸��
    public void paint(Graphics g)
    update(g);public void update(Graphics g)
    Color bg = getBackground();
    Dimension d = size();
    int h = d.height / 2;
    for (int x = 0; x < d.width; x++) {
      int y1 = (int)((1.0 + Math.sin((x - frame) * 0.05)) * 
h);
      int y2 = (int)((1.0 + Math.sin((x + frame) * 0.05)) * 
h);
        if (y1 > y2) {
       int t = y1;
       y1 = y2;
       y2 = t;
        }
        g.setColor(bg);
        g.drawLine(x, 0, x, y1);
        g.drawLine(x, y2, x, d.height);
        g.setColor(Color.black);
        g.drawLine(x, y1, x, y2);
    }

    2.˫���弼��
    ��һ�ּ�С֮֡����˸�ķ�����ʹ��˫���塣˫�������Ҫԭ��
�Ǵ���һ����̨ͼ��, ��һ֡����ͼ��,Ȼ�����drawImage() ����
��ͼ��һ�λ�����Ļ��ȥ������ŵ��Ǵ󲿷ֻ�����������,������
ͼ��һ�λ�����Ļ�ϱ�ֱ������Ļ�ϻ���Ҫ��Ч�öࡣ
    ˫���弼������ʹ����ƽ��,����һ��ȱ��:Ҫ����һ�ź�̨ͼ��
,���ͼ���൱��,�⽫��Ҫ�ܴ��ڴ档
    ʹ��˫���弼��ʱ,ҲӦ����update()��
    Dimension offDimension;Image offImage;Graphics offGraphi
cs;public void upda te(Graphics g)
    Dimension d = size();
    if ((offGraphics == null) ��(d.width != offDimension.wid
th)�� (d.height !=o ffDimension.height))
    {
        offDimension = d;
        offImage = createImage(d.width, d.height);
        offGraphics = offImage.getGraphics();
    }
    offGraphics.setColor(getBackground());
    offGraphics.fillRect(0, 0, d.width, d.height);
    offGraphics.setColor(Color.black);
    paintFrame(offGraphics);
    g.drawImage(offImage, 0, 0, null);public void paint(Grap
hics g)
    if (offImage != null) {
        g.drawImage(offImage, 0, 0, null);
    }public void paintFrame(Graphics g)
    Dimension d = size();
    int h = d.height / 2;
    for (int x = 0; x < d.width; x++) {
        int y1 = (int)((1.0 + Math.sin((x - frame) * 0.05)) 
* h);
        int y2 = (int)((1.0 + Math.sin((x + frame) * 0.05)) 
* h);
        g.drawLine(x, y1, x, y2);
    }

�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu
.cn]


--
  ��Ī��������룬��Ī��������֪ ��

�� ��Դ: �й�ƴ�BBSվ [bbs.ustc.edu.cn]
Technical Details
Message-ID: <980620.ynFdk$PBBS@bbs.ustc.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: f6cb0,f9fcfcd51a5e078f,start
X-Google-Attributes: gidf6cb0,public
From: Qin_Qin@bbs.ustc.edu.cn (��)
Subject: JavaСӦ�ó����еĶ������� (fwd)
Date: 1998/06/20
Message-ID: <980620.ynFdk$PBBS@bbs.ustc.edu.cn>
X-Deja-AN: 364418455
Organization: �й�ƴ�BBSվ
Newsgroups: cn.bbs.comp.lang.java