cocos2dx利用pauseAllRunningActions()暂停并恢复动作
2014-11-06 01:45
399 查看
目前遇到的需求如下:让A放技能,游戏暂停,玩家选择一个目标,游戏恢复,A向目标释放技能
在做游戏暂停的时候,用到了pauseAllRunningActions()函数,他的作用是将该Node上所有正在运行的动作暂停(看函数名就知道了)
用法:
1,Node->pauseAllRunningActions();则该函数只对Node本身在运行的动作生效,Node的子节点的动作不会受到影响;
2,该函数的返回值是一个CCSet对象的指针:CCSet* tmpSet = Node->pauseAllRunningActions();得到这个指针以便恢复动作
3,恢复动作:Node->resumeTargets(tmpSet);
需要注意的地方:
如果流程是这样,肯定是没有问题的:暂停-获得Set-恢复Set;但在实际项目中,往往流程是这样的:暂停-获得Set-各种操作-恢复Set。
因为通过CCSet* tmpSet = Node->pauseAllRunningActions();得到的tmpSet已经调用过autoRelease(),所以在“各种操作阶段”如果超出作用域,可能很快他就会被释放,从而出现野指针,只要记得在获得之后retain(),再在适当的时候release()就可以了。
在做游戏暂停的时候,用到了pauseAllRunningActions()函数,他的作用是将该Node上所有正在运行的动作暂停(看函数名就知道了)
用法:
1,Node->pauseAllRunningActions();则该函数只对Node本身在运行的动作生效,Node的子节点的动作不会受到影响;
2,该函数的返回值是一个CCSet对象的指针:CCSet* tmpSet = Node->pauseAllRunningActions();得到这个指针以便恢复动作
3,恢复动作:Node->resumeTargets(tmpSet);
需要注意的地方:
如果流程是这样,肯定是没有问题的:暂停-获得Set-恢复Set;但在实际项目中,往往流程是这样的:暂停-获得Set-各种操作-恢复Set。
因为通过CCSet* tmpSet = Node->pauseAllRunningActions();得到的tmpSet已经调用过autoRelease(),所以在“各种操作阶段”如果超出作用域,可能很快他就会被释放,从而出现野指针,只要记得在获得之后retain(),再在适当的时候release()就可以了。
相关文章推荐
- cocos2d-x TestLua 之 pauseAllRunningActions() resumeTargets()
- cocos2dx暂停某个action动作并恢复&简单的js-binding
- SharePoint工作流中暂停动作会延迟恢复问题
- 5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制
- ios animation的暂停pause、恢复resume
- 利用ManualResetEvent来来控制异步调用的打印的线程的暂停和恢复(转)
- 笔记:利用Cocos2dx 3.3 lua 做一个动作类游戏(一)
- ios animation暂停pause、恢复resume
- Magento——利用购物车促销规则(Shopping Cart Price Rules)实现自己的功能第一章: 添加新的动作(Actions)
- 【Cocos2dx】用当前游戏状态作为暂停背景、纯文字纯图片按钮与不间断的重复动作序列
- 【Cocos2dx】利用导演类、场景类完成重新开始游戏、暂停游戏、关闭游戏功能
- 利用MYSQL 日志恢复
- cocos2dx监听home键,锁屏,后台转前台暂停功能
- 非归档模式下利用冷备恢复数据库
- Struts2 官方教程:动作编程(Coding actions)
- 利用光盘恢复grub引导器
- cocos2dx常见的46中+22中动作详解
- cocos2dx 常见的49中动作详解
- gdb(二)暂停或恢复程序的运行
- 利用BBED恢复UPDATE修改前的值