游戏线程的暂停,不需要让整个线程挂起。如果整个线程挂起,怎么恢复?
只需要为run函数的while循环内容加一个条件就行。
一、run函数的while循环条件
public void run() {
System.out.println("== run -1");
System.out.println("== run -2");
//游戏进行中, 更多的状态表示,类名.static成员=类名.static常量
while (Tool.gamestate == 1)
{
// 胜负判断
Tool.updatewin(hero, boss);
延时
} // end while
if (Tool.gamestate != 1) // win , fail
{
new UIEnd(); // 弹出新窗口,新对话框
}
System.out.println("== run -3");
}
二、为run函数的while循环内容加暂停条件
while (Tool.gamestate == 1) {
// 暂停功能
if (isPaused == 1) {
Tool.sleep();
continue;
}
//其他刷新
//延时
}
暂停条件的修改,在鼠标或按钮事件中实现。
为键盘事件,单独写一个类,如果没有良好的架构,很难调整维护。即使运行正确,很难后续使用。
public class KeyPro implements KeyListener{
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("== KeyPro keyReleased "+e.getKeyCode());
if(e.getKeyCode() == KeyEvent.VK_Q) //81
{
Tool.pane.isPaused=1-Tool.pane.isPaused; // 0,1切换
}
}
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
这样一个暂停功能就做好了,数据不再刷新,画面也就没变化。
方便做游戏截图。