Java游戏中的两个交替图像和计时器
我正在用Java做一个简单的游戏。 我有一个名为“抽屉”的类,每50毫秒重新绘制一次我保存在BuffereImage数组中的图像 我有一个方法可以将玩家转换为玩家类中的大型玩家,代码如下:Java游戏中的两个交替图像和计时器,java,image,swing,timer,alternate,Java,Image,Swing,Timer,Alternate,我正在用Java做一个简单的游戏。 我有一个名为“抽屉”的类,每50毫秒重新绘制一次我保存在BuffereImage数组中的图像 我有一个方法可以将玩家转换为玩家类中的大型玩家,代码如下: public void playerEvolution() { for (int i = 0; i < 5; i++) { this.setImageIndex(15); try { Thread.sleep(500);
public void playerEvolution() {
for (int i = 0; i < 5; i++) {
this.setImageIndex(15);
try {
Thread.sleep(500);
this.setImageIndex(17);
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
this.isHuge();
}
public void playerEvolution(){
对于(int i=0;i<5;i++){
这是setImageIndex(15);
试一试{
睡眠(500);
这是setImageIndex(17);
睡眠(500);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
这个;
}
我希望每0.5秒交替2张图像,但在游戏面板中,不会交替任何图像,仅在花费2.5秒(0.5*5循环)时显示最终图像
有什么想法吗 如果这是一个Swing应用程序(您不会说),请使用javax.Swing.Timer或Swing Timer。不要在主Swing事件线程(称为事件调度线程或EDT)上调用
Thread.sleep(…)
。在计时器的ActionListener中设置一个int count变量,该变量在每次调用actionPerformed(…)
时递增,如果计数>达到最大计数(这里是5*2,因为您来回交换)
e、 g
public void playerEvolution() {
int delay = 500; // ms
javax.swing.Timer timer = new javax.swing.Timer(delay , new ActionListener() {
private int count = 0;
private int maxCount = 5;
@Override
public void actionPerformed(ActionEvent evt) {
if (count < maxCount * 2) {
count++;
// check if count is even to decide
// which image to use, and then
// do your image swapping here
} else {
((javax.swing.Timer)evt.getSource()).stop();
}
}
});
}
public void playerEvolution(){
int delay=500;//毫秒
javax.swing.Timer Timer=新建javax.swing.Timer(延迟,新建ActionListener(){
私有整数计数=0;
私有整数最大计数=5;
@凌驾
已执行的公共无效操作(操作事件evt){
如果(计数<最大计数*2){
计数++;
//检查计数是否为偶数
//使用哪个图像,然后
//在这里进行图像交换吗
}否则{
((javax.swing.Timer)evt.getSource()).stop();
}
}
});
}
也许您正在寻找动画。看