加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2d-js____对象池的使用

发布时间:2020-12-14 20:50:31 所属栏目:百科 来源:网络整理
导读: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; }, //当加入对象池时,调

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

},

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读