我想让游戏中的画面完全暂停下来,目前的办法是:
执行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。。。。
如果不手写用director那个pause会出现另外一个问题,就是按home后然后返回游戏游戏又继续了,所以还是只有手写
原来还有这种方法,长知识了!!!
想用这个方法做一个模态对话框,思路打结ing。。。。