Android cocos2d 弹弓游戏 Catapult 源代码 完成
2013-05-06 13:27
633 查看
本文是 Android cocos2d 弹弓游戏 Catapult 源代码 的后续
参考下面两篇文章, 完成了较为完整的弹弓游戏
http://mssyy2010.blog.51cto.com/4595971/856611 http://www.raywenderlich.com/4787/how-to-make-a-catapult-shooting-game-with-cocos2d-and-box2d-part-2
现在把源代码提供给大家, 可以从下面的 link 下载
https://github.com/PaynePan/share_src/archive/master.zip
相对前一个版本改进如下
1) 增加了 MyContactListener 进行碰撞监听
2) 增加了粒子系统, 作为碰撞的动画
3) 增加了 GameOverScene, 游戏结束后用户可以重新开始或者退出
要点
加入 Scene 的 Node 不用delete
加入到 HelloWorld 中的 Node ( 就是用 this->addChild(sprite, 0) ), 不需要析构
Cocos2d 有机制自动析构这些对象
b2World 对象需delete
我们创建了 m_world = new b2World(gravity);, 应该delete它
m_world 中的 entity, 就是用下面的方法创建的实体, b2World 有机制自己去析构
m_world->CreateBody()
m_world->CreateJoint()
但不是b2World 中的实体, 比如 contactListener 需要析构
作为Delegate的 Scence 需要remove
当Scene 析构的时候,如果 Scene 是 TouchDelegate, 要把它 remove 掉
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
否则当 Scence 都不存在, Director 还会调用它的方法,引起 crash
CCDirector::sharedDirector()->replaceScene(GameOver::scene());
下面的函数void HelloWorld::onExit() 被触发
我选择这个位置进行相关对象的析构, 程序跑起来还没发现问题.
参考下面两篇文章, 完成了较为完整的弹弓游戏
http://mssyy2010.blog.51cto.com/4595971/856611 http://www.raywenderlich.com/4787/how-to-make-a-catapult-shooting-game-with-cocos2d-and-box2d-part-2
现在把源代码提供给大家, 可以从下面的 link 下载
https://github.com/PaynePan/share_src/archive/master.zip
相对前一个版本改进如下
1) 增加了 MyContactListener 进行碰撞监听
2) 增加了粒子系统, 作为碰撞的动画
3) 增加了 GameOverScene, 游戏结束后用户可以重新开始或者退出
要点
加入 Scene 的 Node 不用delete
加入到 HelloWorld 中的 Node ( 就是用 this->addChild(sprite, 0) ), 不需要析构Cocos2d 有机制自动析构这些对象
b2World 对象需delete
我们创建了 m_world = new b2World(gravity);, 应该delete它m_world 中的 entity, 就是用下面的方法创建的实体, b2World 有机制自己去析构
m_world->CreateBody()
m_world->CreateJoint()
但不是b2World 中的实体, 比如 contactListener 需要析构
作为Delegate的 Scence 需要remove
当Scene 析构的时候,如果 Scene 是 TouchDelegate, 要把它 remove 掉CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
否则当 Scence 都不存在, Director 还会调用它的方法,引起 crash
析构的位置
当调用replaceScene 的时候CCDirector::sharedDirector()->replaceScene(GameOver::scene());
下面的函数void HelloWorld::onExit() 被触发
void HelloWorld::onExit() { delete m_world; delete contactListener; CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this); }
我选择这个位置进行相关对象的析构, 程序跑起来还没发现问题.
相关文章推荐
- Android cocos2d 弹弓游戏 Catapult 源代码
- Android cocos2d 弹弓游戏 Catapult 源代码
- Cocos2D-X2.2.3学习笔记9(处理重力感应事件,移植到Android加入两次返回退出游戏效果)
- Android游戏开发十日通(5)- ubuntu中cocos2d-x2.2 android开发环境配置
- cocos2d-x开发android游戏时出现的问题
- android(安卓)cocos2d-x关于防止游戏中锁屏问题
- cocos2d-x android游戏使用自己的字体
- 使用Visual Studio 2015调试Android平台Cocos2d-x游戏的C++代码
- flappy bird游戏源代码揭秘和下载后续---移植到android真机上
- Cocos2d-x 修改Android平台帧率fps - 解决游戏运行手机发热发烫问题
- 【Cocos2d-x 3.0】游戏开发之android交叉编译
- cocos2d-x android游戏使用自己的字体
- iOS和android游戏纹理优化和内存优化(cocos2d
- 分享20个Android游戏源代码。以后看看。
- 我是如何从0开始,在23天里完成一款Android游戏开发的 – Part 2 – 第3至第5天
- 基于Android的物理类游戏,源代码(JAVA)分享
- iOS和android游戏纹理优化和内存优化(cocos2d-x)
- cocos2d-x android黑屏后返回游戏卡顿
- 【iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可!
- cocos2d-x Android游戏黑屏解决办法