j2me 返回菜单的问题
游戏运行中,遇到特殊事件后,游戏终止,返回主菜单。此时应该如何处理继承于GameCanvas的can中的线程t?特殊事件,比如角色死亡,或游戏设定的特殊条件下需要结束游戏...
游戏运行中,遇到特殊事件后,游戏终止,返回主菜单。
此时应该如何处理继承于GameCanvas的can中的线程t?
特殊事件,比如角色死亡,或游戏设定的特殊条件下需要结束游戏过程,返回菜单,以便重新读档或者开始新游戏。 展开
此时应该如何处理继承于GameCanvas的can中的线程t?
特殊事件,比如角色死亡,或游戏设定的特殊条件下需要结束游戏过程,返回菜单,以便重新读档或者开始新游戏。 展开
2个回答
展开全部
问题不是很明白呀,能不能说的详细一点啊?你是说,游戏遇到特殊事件,游戏不能正常的进行游戏了,所以你想让游戏重新返回主界面,是不是这个意思吗?而你的愿望就是如何实现能够从游戏停止的这种状态返回到主菜单,以便于游戏的健壮性,就是不必退出游戏,就能够重新开始。是这个意思吗?
如果是且往下看
那么,我个人认为这与你的菜单结构有关系,比如,你的菜单界面,与游戏同在一个paint()中完成的话(当然这并不是一种好方法),到底是运行显示菜单的代码,还是游戏的代码是通过变量来控制.比如说boolean key=true的时候显示菜单界面,而为false 的时候运行游戏代码。
那么这个就很容易实现,比如在这个类里面添加按钮监听,想反回主菜单的话,按下设定的键,在CommandAction()中改变key的值,就可以顺利返回主菜单了。所以,这与你的菜单结构相关。
如果你的游戏菜单界面和游戏运行界面是两个不同的类,而在Mildlet这个类中根据不同情况来 setDisplay() 的话。那么线程就一定要在这个入口Midlet类了,那么你就可以在GameCanvas类中定义一个方法比如reStart();这个函数的功能就是把对象的所以变量值设置为最原始的状态。
这样如果你想重新开始的话,调用一下reStart()这个方法就可以重新开始游戏了。还有更简单的就是直接在Midlet类中重新new 一个 GameCanvas对象,就可以重新游戏了。如果是这样的话,线程里几乎不需要改动,只要在你的CommandAction重新赋值一下GameCanvas对象就行了。唉,估计还是没明白吧!我认为与你的游戏结构很相关。
如果是且往下看
那么,我个人认为这与你的菜单结构有关系,比如,你的菜单界面,与游戏同在一个paint()中完成的话(当然这并不是一种好方法),到底是运行显示菜单的代码,还是游戏的代码是通过变量来控制.比如说boolean key=true的时候显示菜单界面,而为false 的时候运行游戏代码。
那么这个就很容易实现,比如在这个类里面添加按钮监听,想反回主菜单的话,按下设定的键,在CommandAction()中改变key的值,就可以顺利返回主菜单了。所以,这与你的菜单结构相关。
如果你的游戏菜单界面和游戏运行界面是两个不同的类,而在Mildlet这个类中根据不同情况来 setDisplay() 的话。那么线程就一定要在这个入口Midlet类了,那么你就可以在GameCanvas类中定义一个方法比如reStart();这个函数的功能就是把对象的所以变量值设置为最原始的状态。
这样如果你想重新开始的话,调用一下reStart()这个方法就可以重新开始游戏了。还有更简单的就是直接在Midlet类中重新new 一个 GameCanvas对象,就可以重新游戏了。如果是这样的话,线程里几乎不需要改动,只要在你的CommandAction重新赋值一下GameCanvas对象就行了。唉,估计还是没明白吧!我认为与你的游戏结构很相关。
展开全部
明白楼主的意思,其实返回主菜单,就相当于从游戏状态转换到了菜单状态,首先县城肯定不需要退出,这里需要一个状态机,也就是在县城里判断各种状态,例如
public void run(){
while(true){
switch(state){
case MENU:
//执行菜单状态下要执行的代码
break;
case PLAY:
//执行游戏状态下要执行的代码
break;
try{
Thread.sleep(100);
}catch(Exception e){}
}
}
}
看你的意思估计你没有些类似的状态机,整个循环只有在游戏进行的时候才执行,你可以去看看这个
http://ajava.org/course/j2me/2108.html
public void run(){
while(true){
switch(state){
case MENU:
//执行菜单状态下要执行的代码
break;
case PLAY:
//执行游戏状态下要执行的代码
break;
try{
Thread.sleep(100);
}catch(Exception e){}
}
}
}
看你的意思估计你没有些类似的状态机,整个循环只有在游戏进行的时候才执行,你可以去看看这个
http://ajava.org/course/j2me/2108.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询