【cocos2d-js官方文档】十二、对象缓冲池
2015-10-16 18:16
519 查看
cc.pool的使用场景
经常创建和销毁的元素,例如打飞机游戏里面的子弹等。不适用的场景:不是很经常创建的物体,比如背景,建筑等。
如何使用cc.pool
让你的类支持cc.pool
首先,你需在需要使用
cc.pool来管理的类中实现
reuse和
unuse方法,
cc.pool在执行
putInPool时将调用该对象的
unuse方法,可以在
unuse中完成进入回收池前的操作,
reuse是当你要从回收池中取出对象时的重新初始化操作,你可以将这个对象初始化为重新可用的状态。
var MySprite = cc.Sprite.extend({ _hp: 0, _sp: 0, _mp: 0, ctor: function (f1, f2, f3) { this._super(f1, f2, f3); this.initData(f1, f2, f3); }, initData: function (f1, f2, f3) { this._hp = f1; this._mp = f2; this._sp = f3; }, unuse: function () { this._hp = 0; this._mp = 0; this._sp = 0; this.retain();//if in jsb this.setVisible(false); this.removeFromParent(true); }, reuse: function (f1, f2, f3) { this.initData(f1, f2, f3); this.setVisible(true); } }); MySprite.create = function (f1, f2, f3) { return new MySprite(f1, f2, f3) } MySprite.reCreate = function (f1, f2, f3) { var pool = cc.pool; if (pool.hasObject(MySprite)) return pool.getFromPool(MySprite, f1, f2, f3); return MySprite.create(f1, f2, f3); }
放入回收池
cc.pool.putInPool(object);
调用此方法将调用对象的
unuse的方法,并将对象放入回收池。
从回收池回收对象
var object = cc.pool.getFromPool("MySprite", args);
当你需要从回收池中取出一个对象,你可以调用
getFromPool传入对象的class,以及传入需要传入的初始化参数,这些参数将被传入reuse方法中,
cc.pool将自动调用reuse方法。
判断回收池中是否有可用对象
var exist = cc.pool.hasObject("MySprite");
该方法用于查找回收池中是否存在
MySprite类的可回收对象。
删除回收池中的某个对象
cc.pool.removeObject(object);
将你要删除的对象传入,该对象将会从回收池删除。
清空回收池
cc.pool.drainAllPools();
当你需要清除所有回收池中的对象,例如完成游戏要进入其他页面,旧页面中的可回收对象不再有用了,为避免不必要的内存占用,你可以使用
drainAllPools删除所有的可回收对象。
转载自:cocos2dx开发网
相关文章推荐
- 【cocos2d-js官方文档】十一、cc.path
- 【cocos2d-js官方文档】十、log
- 【cocos2d-js官方文档】八、cc.game
- 【cocos2d-js官方文档】七、CCFileUtils
- 【cocos2d-js官方文档】六、cc.async
- 【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API
- 【cocos2d-js官方文档】四、基础数据类型
- 【cocos2d-js官方文档】三、Bake功能使用说明
- 【cocos2d-js官方文档】二、资源管理器Assets Manager
- cocos2d-x 3.0 常用对象的创建方式
- cocos2dx - ActionManager内存泄露
- cocos2dx常用宏
- cocos2d之Box2D详细说明 鼠标联合实现
- Cocos2d-x3.2 使用物理引擎进行碰撞检测[转]
- 【复习笔记】 cocos2d-x 2.x 渲染特效实现 一 基础回顾
- Cocos2D-X2.2.3学习笔记12(瞬间动作)
- cocos2dx 3.2 定义自己使用rapidjson阅读json数据
- Cocos2dx 对android支持原理
- Cocos2d中update与fixedUpdate的区别(六)
- Cocos2d中update与fixedUpdate的区别(六)