博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【cocos2d-js官方文档】十二、对象缓冲池
阅读量:5836 次
发布时间:2019-06-18

本文共 1677 字,大约阅读时间需要 5 分钟。

2014-12-12 21:39 1134人阅读 (0)

category_icon.jpg 分类:

cocos2d-js(28) arrow_triangle%20_down.jpg

目录

cc.pool的使用场景

  • 经常创建和销毁的元素,例如打飞机游戏里面的子弹等。
  • 不适用的场景:不是很经常创建的物体,比如背景,建筑等。

如何使用cc.pool

  1. 让你的类支持cc.pool

    首先,你需在需要使用cc.pool来管理的类中实现reuseunuse方法,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);}
  2. 放入回收池

    cc.pool.putInPool(object);

    调用此方法将调用对象的unuse的方法,并将对象放入回收池。

  3. 从回收池回收对象

    var object = cc.pool.getFromPool("MySprite", args);

    当你需要从回收池中取出一个对象,你可以调用getFromPool传入对象的class,以及传入需要传入的初始化参数,这些参数将被传入reuse方法中,cc.pool将自动调用reuse方法。

  4. 判断回收池中是否有可用对象

    var exist = cc.pool.hasObject("MySprite");

    该方法用于查找回收池中是否存在MySprite类的可回收对象。

  5. 删除回收池中的某个对象

    cc.pool.removeObject(object);

    将你要删除的对象传入,该对象将会从回收池删除。

  6. 清空回收池

    cc.pool.drainAllPools();

    当你需要清除所有回收池中的对象,例如完成游戏要进入其他页面,旧页面中的可回收对象不再有用了,为避免不必要的内存占用,你可以使用drainAllPools删除所有的可回收对象。

转载于:https://www.cnblogs.com/Siegel/p/5928482.html

你可能感兴趣的文章
Java基础之String,StringBuilder,StringBuffer
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
微软职位内部推荐-Sr DEV
查看>>
让你的WPF程序在Win7下呈现Win8风格主题
查看>>
802.11 学习笔记
查看>>