我的一个游戏程序的主Canvas有形如下面的代码:
public void run() {
... ...
while(true) {
if (paused) continue;//用布尔变量paused表示当前处于暂停状态与否
//游戏的每一帧的处理过程在此:
... ..
//:处理过程结束
Thread.sleep(66);
}
}
public void keyPressed(int keyCode) {
int gameKey=getGameAction(keyCode);
if (gameKey==...) {
... ...
}
else if (gameKey==Canvas.GAME_C) {
paused=!paused;
}
}
也就是说当按下游戏键C时,就会改变当前的暂停状态.
然而编译运行时发现了一个奇怪的现象(我用的IDE是NetBeans5.5):当选择混淆级别为0即无混淆时,按游戏C键可以正常地使游戏进入暂停状态; 但当有混淆时,按下C键则不能进入暂停状态; 而且,如果进入单步调试运行方式,则即使有混淆,也能正常暂停.
甚是不解.
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
把pause定义成 volatile 试试。