0

这是我的小程序代码。我在互联网上搜索了有关如何为小程序设置动画的示例,但我的问题是我无法让翅膀扇动。

我认为我应该使用线程和重绘,但是我不知道如何实现这两个以及如何启动代码。

public class boom extends Applet implements Runnable 
{
    int z = 0;
    int x = 0;
    Thread t = null;
    boolean threadSuspended;

    public void init() {
        setBackground(Color.CYAN);
    } 

    public void start() {
        System.out.println("start(): begin");
        if ( t == null ) {
            System.out.println("start(): creating thread");
            t = new Thread( this );
            System.out.println("start(): starting thread");
            threadSuspended = false;
            t.start();
        }
        else {
            if ( threadSuspended ) {
                threadSuspended = false;
                System.out.println("start(): notifying thread");
                synchronized( this ) {
                notify();
                }
            }
        }
        System.out.println("start(): end");
    }

    public void stop() {
    } 

    public void destroy() {
        System.out.println("destroy()");
    } 

    public void run() {
        System.out.println("run(): begin");
        try {
            while (true) {
                System.out.println("run(): awake");

                // Here's where the thread does some work
                x++;
                z++;

                if (z == 2) {
                    z = 0;
                }

                if ( x == 750 ) {
                    x = 0;
                }

                showStatus( "i is " + x );

                // Now the thread checks to see if it should suspend itself
                if ( threadSuspended ) {
                    synchronized( this ) {
                        while ( threadSuspended ) {
                            System.out.println("run(): waiting");
                            wait();
                        }
                    }
                }

                System.out.println("run(): requesting repaint");
                repaint();
                System.out.println("run(): sleeping");
                t.sleep( 50);  // interval given in milliseconds
            }
        }
        catch (InterruptedException e) {
        }
        System.out.println("run(): end");
    }


    public void paint(Graphics g) { 
        g.fillRect(x+300,10,10,10);
        g.fillRect(x+320,10,10,10);

        //2nd
        g.fillRect(x+280,20,50,10);

        //3rd
        g.fillRect(x+280,30,10,10);
        g.fillRect(x+320,30,10,10);
        g.fillRect(x+260,30,10,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+270,30,10,10);
        g.fillRect(x+250,30,10,10);
        g.fillRect(x+290,30,30,10);

        //4th
        g.setColor(Color.BLACK);
        g.fillRect(x+240,40,10,10);
        g.fillRect(x+310,40,10,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+250,40,60,10);

        //5th
        g.setColor(Color.BLACK);
        g.fillRect(x+240,50,10,10);
        g.fillRect(x+310,50,10,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+250,50,60,10);

        //6th
        g.fillRect(x+240,60,50,10);
        g.setColor(Color.BLACK);
        g.fillRect(x+290,60,20,10);

        //7th
        g.fillRect(x+290,70,10,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+240,70,10,10);
        g.fillRect(x+280,70,10,10);
        g.setColor(Color.GRAY);
        g.fillRect(x+250,70,30,10);
        g.setColor( new Color(24,138,53) ); //green
        g.fillRect(x+370,70,40,10);

        //8th
        g.setColor(Color.WHITE);
        g.fillRect(x+230,80,30,10);
        g.fillRect(x+280,80,10,10);
        g.fillRect(x+380,80,20,10);
        g.setColor(Color.GRAY);
        g.fillRect(x+260,80,20,10);
        g.setColor(Color.BLACK);
        g.fillRect(x+290,80,10,10);

        g.setColor( new Color(12,139, 34) ); //green
        g.fillRect(x+360,80,20,10);
        g.fillRect(x+400,80,20,10);

        //9th
        g.setColor(Color.WHITE);
        g.fillRect(x+230,90,60,10);
        g.fillRect(x+370,90,20,10);
        g.fillRect(x+400,90,10,10);
        g.setColor(Color.BLACK);
        g.fillRect(x+290,90,10,10);
        g.fillRect(x+390,90,10,10);

        g.setColor( new Color(12,139, 34) ); //green
        g.fillRect(x+350,90,20,10);
        g.fillRect(x+410,90,10,10);
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+420,90,20,10);

        //10
        g.setColor(Color.WHITE);
        g.fillRect(x+240,100,40,10);
        g.fillRect(x+370,100,20,10);
        g.fillRect(x+400,100,10,10);
        g.setColor(Color.BLACK);
        g.fillRect(x+280,100,20,10);
        g.fillRect(x+390,100,10,10);

        g.setColor( new Color(12,139, 34) ); //green
        g.fillRect(x+340,100,30,10);
        g.fillRect(x+410,100,10,10);
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+420,100,40,10);

        //11
        g.setColor(Color.WHITE);
        g.fillRect(x+230,110,50,10);
        g.fillRect(x+320,110,10,10);
        g.fillRect(x+370,110,40,10);

        g.setColor( new Color(12,139, 34) ); //green
        g.fillRect(x+330,110,40,10);
        g.fillRect(x+410,110,10,10);
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+420,110,60,10);

        g.setColor(Color.BLACK);
        g.fillRect(x+280,110,10,10);
        g.fillRect(x+310,110,10,10);

        //12
        g.fillRect(x+210,120,20,10); 
        g.fillRect(x+280,120,40,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+230,120,50,10);
        g.fillRect(x+320,120,10,10);
        g.setColor( new Color(36,102,54) ); //dark green
        g.fillRect(x+330,120,20,10);
        g.fillRect(x+400,120,10,10); 

        g.setColor( new Color(12,139, 34) ); //green
        g.fillRect(x+350,120,30,10);
        g.fillRect(x+410,120,10,10); 

        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+380,120,20,10); 

        g.setColor( new Color(255,73,0) ); //dark orange
        g.fillRect(x+420,120,20,10); 
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+440,120,40,10); 

        //13
        g.setColor(Color.BLACK);    
        g.fillRect(x+180,130,50,10); 
        g.fillRect(x+270,130,50,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+230,130,10,10);
        g.fillRect(x+260,130,10,10);
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+240,130,20,10);
        g.fillRect(x+320,130,20,10);
        g.setColor( new Color(36,102,54) ); //dark green
        g.fillRect(x+340,130,20,10);
        g.fillRect(x+370,130,50,10);
        g.setColor( new Color(12,139, 34) ); //green
        g.fillRect(x+360,130,10,10);
        g.setColor( new Color(255,73,0) ); //dark orange
        g.fillRect(x+420,130,60,10); 

        //14
        g.setColor(Color.BLACK);    
        g.fillRect(x+150,140,80,10);
        g.fillRect(x+270,140,60,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+230,140,40,10);
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+330,140,10,10);
        g.setColor( new Color(36,102,54) ); //dark green    
        g.fillRect(x+340,140,70,10);    

        //15
        g.setColor(Color.BLACK);    
        g.fillRect(x+160,150,70,10);
        g.fillRect(x+280,150,50,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+230,150,50,10);
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+330,150,10,10);

        //16
        g.setColor(Color.BLACK);    
        g.fillRect(x+170,160,60,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+230,160,60,10);
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+290,160,20,10);

        //17
        g.setColor(Color.BLACK);    
        g.fillRect(x+180,170,50,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+230,170,60,10);
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+290,170,10,10);

        //18
        g.setColor(Color.BLACK);    
        g.fillRect(x+190,180,30,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+220,180,10,10);
        g.fillRect(x+240,180,30,10);
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+230,180,10,10);
        g.fillRect(x+270,180,20,10);

        //19
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+190,190,60,10);
        g.fillRect(x+260,190,20,10);
        g.setColor(Color.WHITE);
        g.fillRect(x+250,190,10,10);

        //20
        g.setColor( new Color(128,128,128) ); //gray
        g.fillRect(x+210,200,50,10);

        //21
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+190,210,10,10);
        g.setColor( new Color(255,73,0) ); //orange
        g.fillRect(x+200,210,30,10);

        //22
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+180,220,30,10);
        g.setColor( new Color(255,73,0) ); //orange d
        g.fillRect(x+210,220,10,10);

        //23
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+190,230,20,10);

        //24
        g.setColor( new Color(255,133,0) ); //orange
        g.fillRect(x+190,240,10,10);
    }
}
4

0 回答 0