在JGame中,方法setBGImage()
应该更改背景图像。这在我在初始化开始时第一次设置背景图像时有效。但是,当我稍后调用相同的方法来更改背景图像时,它似乎什么都不做。我做错了什么?
以下是一些示例代码,向您展示我的意思:
import jgame.*;
import jgame.platform.*;
public class Test extends JGEngine{
public static void main(String[] args) {
new Test();
}
public Test(){
super();
initEngine(640,480);
}
public void initCanvas(){
setCanvasSettings(10,6,64,80,null,JGColor.white,null);
}
public void initGame(){
setFrameRate(35,2);
defineMedia("media.tbl");
doTestBackground();
}
/* Demonstrates the bug */
void doTestBackground(){
new Thread(new Runnable(){
public void run(){
setBGImage("bg1");
/* If it's put here, then it works perfectly:
setBGImage("bg2"); */
try{
Thread.sleep(2000);
}
catch(Exception e){}
/* If it's put here it doesn't work!
The background SHOULD change here but it doesn't */
setBGImage("bg2");
}
}).start();
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
仅供参考,此setBGImage行为是版本3.4中修复的错误。从3.4开始,setBGImage正确更新了屏幕。
答案 2 :(得分:0)
也许您遇到使用错误线程的问题?通常,AWT线程用于更改组件(在Swing框架中)。
尝试使用SwingUtilities.invokeLater(new Runnable() { public void run() { setBGImage("things");} } );