现在,我知道这已被问到,但我需要知道如何在html或其他任何内容上执行此操作。继承我的代码,不包括所有其他java文件。
package rtype;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.ImageIcon;
public class aa {
private int xd;
private int yd;
private int dx;
private int dy;
private int x;
private int y;
private Image image;
private ArrayList missiles;
private final int CRAFT_SIZE = 70;
public aa() {
ImageIcon ii = new ImageIcon(this.getClass().getResource("/aa.png"));
image = ii.getImage();
missiles = new ArrayList();
x = 10;
y = 10;
xd = -14;
yd = 140;
}
public void move() {
if(y >=xd)
y += dx;
else if(y < xd)
y += 1;
if(y <=yd)
y += dy;
else if(y > yd)
y += -1;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Image getImage() {
return image;
}
public ArrayList getMissiles() {
return missiles;
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE) {
fire();
}
if (key == KeyEvent.VK_UP) {
dy = -1;
}
if (key == KeyEvent.VK_DOWN) {
dy = 1;
}
if (key == KeyEvent.VK_RIGHT) {
yd++;
}
if (key == KeyEvent.VK_LEFT) {
yd--;
}
if (key == KeyEvent.VK_W) {
xd++;
}
if (key == KeyEvent.VK_S) {
xd--;
}
}
public void fire() {
try{
missiles.add(new Missle(x + CRAFT_SIZE, y + CRAFT_SIZE));
}catch(Exception e){}
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_UP) {
dy = 0;
}
if (key == KeyEvent.VK_DOWN) {
dy = 0;
}
}
}
所以,在方法中,fire(),我想让它在两次拍摄之间延迟。怎么样?
抱歉,如果这是n00bish
答案 0 :(得分:3)
正如已经指出的那样,Thread.sleep()
是您问题的直接答案。
然而,看看你的代码,我可以看到你想用它来计时动画,而Thread.sleep()
不是一个好主意。 (我不想在这里详细介绍,尝试一下,没有任何伤害,你很快就会明白为什么。)
你应该拥有的是三部分系统:
Thread.sleep()
,记住它偶尔可能会非常不准确。该引擎从队列中获取命令,处理它们并更新内部游戏状态(例如坐标)。我知道这听起来好像很多工作,但它的工作量比你原本要做的少得多。
答案 1 :(得分:1)
您可以使用Thread.sleep(1000);
睡眠1000毫秒(1秒)。
请注意,您必须捕获InterruptedException:
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// Handle here
}
答案 2 :(得分:1)
尝试Thread.sleep(1000)
每千人是一秒钟,例如,
如果你想要它5秒Thread.sleep(5000)
希望我帮助你!
答案 3 :(得分:0)
Thread.sleep(x);
其中x
以毫秒为单位。有关详细信息,请参阅tutorial on sleep()。