Cocos2d-js____对象池的使用

前端之家收集整理的这篇文章主要介绍了Cocos2d-js____对象池的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

var MySprite = cc.Sprite.extend({

_hp: 0,

_sp: 0,

_mp: 0,

ctor: function (f1,f2,f3) {

this._super(s_grossini);

this.initData(f1,f3);

},

initData: function (f1,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,f3) {

this.initData(f1,f3);

this.setVisible(true);

}

});



addSpriteByPool: function () {

//数组,方便移除精灵

this.datalist2 = [];

//先创建一些精灵,保存在对象池中,方便调用

for (var i = 0; i < 150; i++) {

var sp =new MySprite(f1,f3);

this.addChild(sp);

//将对象放入对象——1

cc.pool.putInPool(sp);

}

//提示

this.timeStart("use Pool");

//开始创建,从对象池中调用,当对象池中的对象不够时,独立创建。

for (var i = 0; i < 151; i++) {

//从对象池中调用,创建

var sp =null;

if (cc.pool.hasObject(MySprite)){//判断MySprite类型的对象是否存在,且是否存在实例对象

cc.log("调用的是保存在对象池中MySprite类型的对象实例,可以修改属性");

sp = cc.pool.getFromPool(MySprite,3,4+i,5);

}else {

cc.log("*********对象池中MySprite类型的对象实例已经被用完,需要重新创建!!!*******");

sp = new MySprite(f1,f3);

}

this.datalist2.push(sp);

this.addChild(sp,100);


//改变精灵的位置

sp.x = 50 + 8 * i;

}

//提示

this.setPoolLabel(this.timeEnd("use Pool"));

//添加一个定时器,移除对象

this.schedule(function () {

for (var i = 0; i <this.datalist2.length; i++) {

this.datalist2[i].removeFromParent(true);

}

this.datalist2 = [];

//移除所有的池中的对象,并重置

cc.pool.drainAllPools();

},1,0.1);

},

原文链接:https://www.f2er.com/cocos2dx/343502.html

猜你在找的Cocos2d-x相关文章