怎样实现暂停功能?

我想让游戏中的画面完全暂停下来,目前的办法是:
执行layer的pauseSchedulerAndActions()方法
执行layer中的所有sprite的pauseSchedulerAndActions()方法
在代码中增加判断,当暂停时拒收layer和所有sprite的touch事件。
似乎挺麻烦的,有没有简便的方法?

CCDirector::sharedDirector()->pause(); - -|||

— Begin quote from ____

布莱特 发表于 2012-4-23 20:56 url

CCDirector::sharedDirector()->pause(); - -|||

— End quote

是的,我们在计费收钱的时候经常用到这个

使用CCDirector::sharedDirector()->pause();动画确实暂定了,但是touch事件仍然生效,还必须在
cctouchBegan和cctouchEnd里检测CCDirector::sharedDirector()->isPaused()。
看来只能这样了。。。

简单的解决方法就是加个暂停界面,暂停的时候显示出来,截获全部touch事件不做处理就行了

如果不手写用director那个pause会出现另外一个问题,就是按home后然后返回游戏游戏又继续了,所以还是只有手写

home键回来继续,是因为AppDelegate在回来的时候调用了resume方法。
我不知道你游戏的逻辑怎么样的,如果需要回来也停止的话,就把AppDelegate的resume那句代码删掉好了。

我提供一个变态歪招,继承一个CCLayer类,截断所有触摸输入不再传递
每次需要屏蔽触摸的时候,就直接贴上去开启触摸的时候,再删除

你可以试试效果,如果好说一声

刚才调了一下代码
发现另一种思路

所有继承自CCLayer的东西都可以关闭触摸的,比如CCMenu

— Begin quote from ____

老G 发表于 2012-4-24 12:20 url

我提供一个变态歪招,继承一个CCLayer类,截断所有触摸输入不再传递
每次需要屏蔽触摸的时候,就直接贴上去 …

— End quote

我现在就是采用这种方法,单独建了一个层,要暂停时就把它加到scene里,恢复游戏时再删除,要点是:
1,CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,kCCMenuTouchPriority+1,true);
//kCCMenuTouchPriority+1:优先级只比菜单高.
//true:吞掉所有touch
2,
bool MPauseLayer::ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent )
{
return true;//touchbegan时无条件接收
}
效果还算不错。

— Begin quote from ____

jinnaluo 发表于 2012-4-25 21:36 url

我现在就是采用这种方法,单独建了一个层,要暂停时就把它加到scene里,恢复游戏时再删除,要点是:
1,CC …

— End quote

补充:

3.添加为子节点时,深度值要足够大哦

是kCCMenuTouchPriority-1吧,+1时有试过按钮能按么- -?

原来还有这种方法,长知识了!!!
想用这个方法做一个模态对话框,思路打结ing。。。。:dizzy:

如果不手写用director那个pause会出现另外一个问题,就是按home后然后返回游戏游戏又继续了,所以还是只有手写

原来还有这种方法,长知识了!!!
想用这个方法做一个模态对话框,思路打结ing。。。。:dizzy: