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删除所有的可回收对象。

【cocos2d-js官方文档】十二、对象缓冲池的更多相关文章

  1. 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述

    原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...

  2. bootbox.js官方文档中文版

    bootbox.js官方文档中文版简介:Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Boot ...

  3. OKHttp 官方文档【二】

    OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2.支持同一Host 连接池复用.支持Http缓存.支持自动重定向 等等,有太多的优点. 一直想找时间了解一下 OkHttp ...

  4. Hui之Hui.js 官方文档

    基础 // 判断值是否是指定数据类型 var result = hui.isTargetType("百签软件", "string"); //=>true ...

  5. Gora官方文档之二:Gora对Map-Reduce的支持

    参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...

  6. Gora官方文档之二:Gora对Map-Reduce的支持 分类: C_OHTERS 2015-01-31 11:27 232人阅读 评论(0) 收藏

    参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...

  7. 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象

    为何将单例模式移除 在Cocos2d-JS v3.0之前.全部API差点儿都是从Cocos2d-x中移植过来的,这是Cocos2d生态圈统一性的重要一环.可惜的是,这样的统一性也在非常大程度上限制了C ...

  8. 【cocos2d-js官方文档】二十、moduleConfig.json

    概述 该配置文件相当于v2版本号中的jsloader.js. 改造的目的是为了使得配置纯粹化,同一时候也能比較好的支持cocos-console.cocos-utils甚至是用户自己定义脚本工具. 字 ...

  9. Vue.js官方文档学习笔记(二)组件化应用的构建

    组件化应用的构建 组件化应用允许我们使用小型.独立和通常可复用的组件构建大型应用. Vue注册组件 Vue.component('todo-item',{template:'<li>这是个 ...

  10. 【cocos2d-js官方文档】二、资源管理器Assets Manager

    这篇文档将介绍Cocos2d-JS 3.0的一个重量级新特性:资源管理器(仅支持JSB).资源管理器是为游戏运行时的资源热更新而设计的,这里的资源可以是图片,音频甚至游戏脚本本身.使用资源管理器,你将 ...

随机推荐

  1. 【python】python获取当前日期前后N天或N月的日期

    # -*- coding: utf- -*- '''获取当前日期前后N天或N月的日期''' from time import strftime, localtime from datetime imp ...

  2. 【bzoj1452】[JSOI2009]Count 二维树状数组

    题目描述 输入 输出 样例输入 样例输出 1 2 题解 二维树状数组 一开始没看到 1≤c≤100 ,想到了主X树和X块,结果发现c的范围那么小... 二维树状数组水题,和一维的一样,向上修改,向下查 ...

  3. [洛谷P4208][JSOI2008]最小生成树计数

    题目大意:有$n$个点和$m$条边(最多有$10$条边边权相同),求最小生成树个数 题解:对于所有最小生成树,每种边权的边数是一样的.于是就可以求出每种边权在最小生成树中的个数,枚举这种边的边集,求出 ...

  4. 【Linux】线程池

    首先,线程池是什么?顾名思义,就是把一堆开辟好的线程放在一个池子里统一管理,就是一个线程池. 其次,为什么要用线程池,难道来一个请求给它申请一个线程,请求处理完了释放线程不行么?也行,但是如果创建线程 ...

  5. CF840C On the Bench 解题报告

    CF840C On the Bench 题意翻译 给定\(n\) \((1≤n≤300)\) 个数,求问有多少种排列方案使得任意两个相邻的数之积都不是完全平方数.由于方案数可能很大,输出方案数 \(m ...

  6. CodeForces743E. Vladik and cards 二分+状压dp

    这个题我们可以想象成_---___-----__的一个水柱它具有一遍优一遍行的性质因此可以用来二分最小值len,而每次二分后我们都要验根,we可以把这个水柱想成我们在每个数段里取前一段的那个数后一段有 ...

  7. missing blocks错误

    Datanode的日志中看到: 10/12/14 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXX ...

  8. es6快速排序

    let qsort = fn =>([x,...xn]) => x == null ? [] : [ ...qsort(fn)(xn.filter(a=>fn(a,x))), x, ...

  9. Switf与OC混合开发流程

    看着身边越来越多的小伙伴转入Swift,本人也跟随潮流,转战Swift了~下面是初步写入的一个Swift项目框架. 1.创建项目,这个应该不用说了,语言swift 2.CocoaPods 导入第三方 ...

  10. [bzoj3306]树——树上倍增+dfs序+线段树

    Brief Description 您需要写一种数据结构,支持: 更改一个点的点权 求一个子树的最小点权 换根 Algorithm Design 我们先忽略第三个要求. 看到要求子树的最小点权,我们想 ...