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);

},

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...