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