这是我的小程序代码。我在互联网上搜索了有关如何为小程序设置动画的示例,但我的问题是我无法让翅膀扇动。
我认为我应该使用线程和重绘,但是我不知道如何实现这两个以及如何启动代码。
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);
}
}