简易动画制作

 1 import java.awt.*;
 2 import java.awt.event.*;
 3 import java.applet.*;
 4 public  class ShowAnimation extends Applet implements Runnable{
 5     Thread duke;
 6     Image images[]=new Image[4], image;
 7     int index, delay;
 8     boolean flag;
 9     public void init(){
10        index=0;
11        duke=new Thread(this);
12        delay=Integer.parseInt(getParameter("delay"));//从HTML代码中<param>中获取延迟时间
13        for(int i=1; i<=4; ++i){
14            images[i-1]=getImage(getCodeBase(), "zjy" + i + ".jpg");
15        image=images[index];
16        String s=i+"zjy"+1;
17        System.out.println(s);
18        }
19        //还有注意:String s="zjy" + i + 1;//因为"zjy"+i得到的是一个字符串,然后第二个'+'号在这里变成了连接符,并不是算出i+1的整数值
20        //String s=i+1+"zjy";//这时候第一个'+'就是计算两个整数值相加的,然后第二个'+'是连接符
21        addMouseListener(new MouseAdapter(){
22           public void mousePressed(MouseEvent e){
23              if(duke==null)
24                 start();
25              else
26          stop();
27           }
28        });
29     }
30     public void start(){
31         flag=true;//表示动画开始播放
32         duke=new Thread(this);
33         //start方法把嵌入在线程中的虚拟CPU置为可运行状态,意味着它可以被调度运行,但并不意味着线程会立即运行
34         duke.start();
35         showStatus("Click to stop!");
36     }
37     public void stop(){
38         flag=false;
39         duke=null;
40         showStatus("Click to start!");
41     }
42     public void paint(Graphics g){
43        g.drawImage(image, 0, 0, 200, 300, this);
44     }
45 
46     public void run(){
47        while(flag){//flag为false后线程将完成运行并结束,将不能再运行!所以一个线程不能多次调用start()方法!
48           repaint();
49           try{
50            Thread.sleep(delay);
51          }catch(InterruptedException e){
52          
53           }
54           image=images[(++index)%4];
55        }
56     }
57 }

 

posted @ 2014-06-18 11:59  hjzqyx  阅读(410)  评论(0编辑  收藏  举报