- 博客(7)
- 收藏
- 关注
转载 cocos2d-x定时器
cocos2d-x为我们提供了两种方式实现定时机制: update方法 以及 schedule方法 1.update定时器 第一种定时机制是CCNode的刷新事件update方法,该方法在每帧绘制之前都会被触发一次。由于绘图帧率有限,而每次更新最终会反映到画面上,所以在每帧之间刷新一次已经足够应付大部分游戏逻辑处理的要求了。 CCNode默认并没有启用update事件,为了启用定时器,我们
2014-12-09 15:16:45
395
转载 cocos2d-x内存管理原则
使用cocos2d-x开发游戏时内存管理的原则: 1.程序段必须成对执行retain()和release()或者执行autorelease()来开始和结束对象的引用; 2.工厂方法返回前,应通过autorelease()结束该对象的引用; 3.对象传值时,应考虑醒酒对象相同的特殊情况; 4.尽量使用release()而不是autorelease()来释放对象引
2014-12-09 14:52:05
386
转载 cocos2d-x 内存管理的相关辅助宏
//使用delete操作符删除一个C++对象p,如果p为NULL,则不进行操作 CC_SAFE_DELETE(p); //使用delete[]操作符删除一个C++数组p,如果p为NULL,则不进行操作 CC_SAFE_DELETE_ARRAY(p); //使用free()函数删除p,如果p为NULL,则不进行操作
2014-12-09 14:43:22
394
转载 cocos2d-x内存释放:release()还是autorelease()?
在使用autorelease()可以达到与release()同样的效果,甚至还能避免release()的许多隐患的情况下,是不是应该完全用autorelease()代替release()呢? 实际上,autorelease()并不是没有代价的,其背后的垃圾回收池机制同样需要占用CPU和内存资源,每次autorelease()执行的过程,实际上对应的是执行成对的retain()和releas
2014-12-09 14:14:40
956
转载 cocos2d-x内存管理机制之autorelease()
一个经典的工厂方法如同这样: CCObject* factoryMethod(){ CCObject* ret = new CCObject(); return ret; } 工厂方法对ret对象的引用在函数返回时已经结束,但是它没有释放对ret的引用,买下了内存泄露的隐患。但是如果在函数返回前就执行了release(),这显然是不适合的,因为这会触发对象的
2014-12-09 11:20:09
1764
转载 cocos2d-x的内存管理机制release(),retain(),autorelease()
每个对象包含一个用来控制生命周期的引用计数器,我们可以通过retainCount()方法来获得对象当前的引用计数值。 在对象通过构造函数创建的时候,引用值就被赋值为1,表示对象由创建者所引用。 在其他地方需要引用该对象时,可以调用retain()方法,使其引用值加1,表示获取该对象的引用权; 在引用结束的时候调用release()方法,计数值减1,表示释放该对象的引用;
2014-12-09 11:13:19
486
原创 cocos2d-x学习之给CCLayer设置单点触摸
void MyBulletLayer::onEnter() { Layer::onEnter(); this->scheduleUpdate(); setTouchEnabled( true ); //设置为单点触摸 setTouchMode(Touch::DispatchMode::ONE_BY_ONE); } 默认是多点触摸,所以不改变触摸模式,不能进
2014-12-04 18:05:49
360
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人