这是我对小程序动画的第一手经验。我创建了一个小游戏,其中在小程序的上部,一列块必须保持移动,而在底部 derz 上,块 dat 必须将子弹击中 d 块移动的火车中的一个。问题是 dat每当我按下向上方向键时,子弹开始向上但火车停止(虽然我知道它为什么会发生)。但我需要子弹和火车移动(根据他们自己的速度).....赫兹代码:
//<applet code=abyss.java width=500 height=500></applet>
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class abyss extends Applet implements Runnable,KeyListener{
int l,i=0,n,c,ct=450,cl=225,y,f,bl,bw,fr;
Thread v=null;
public void init() {
setBackground(Color.black);
addKeyListener(this);
}
public void start() {
v=new Thread(this);
v.start();
}
public void run() {
try{
while(true) {
if(y==1) {
bl=cl+25;
bw=4;
f=446;
while(f>41)
{
repaint(bl,f,bw,bw);
f--;
v.sleep(5);
}
y=0;
bw=0;
}
System.out.println("in thread");
repaint();
v.sleep(1000);
i=i+40;
c=1;
System.out.println("after sleep");
n=i/40;
}
}
catch(Exception e){}
}
public void paint(Graphics g) {
g.setColor(Color.darkGray);
g.fillRect(0,200,30,300);
g.fillRect(470,200,30,300);
g.fillRect(0,470,500,30);
g.setColor(Color.blue);
g.fillRect(cl,ct,50,20);
setBackground(Color.black);
System.out.println("in paint()");
for(int j=n;j>=0;j--)
{ l=j*40;
if((c%2)==0)
{g.setColor(Color.orange);
g.fillRect(l,0,50,40);}
else
{g.setColor(Color.cyan);
g.fillRect(l,0,50,40);}
c++;
System.out.println("in for");
}
g.setColor(Color.yellow);
g.fillOval(bl,f,bw,bw);
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_LEFT){
cl=cl-10;}
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
cl=cl+10;}
if(e.getKeyCode()==KeyEvent.VK_UP){
y= 1;}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void stop() {
try{wait();}
catch(Exception e) {}
}
public void destroy() {}
}
我需要的是为同一个小程序使用两个单独的paint()或为同一个小程序使用两个单独的run()........但我找不到两者的实现。PLz尽快帮助