【cocos2d-js官方文档】十二、对象缓冲池
cc.pool的使用场景
- 经常创建和销毁的元素,例如打飞机游戏里面的子弹等。
- 不适用的场景:不是很经常创建的物体,比如背景,建筑等。
如何使用cc.pool
让你的类支持
cc.pool首先,你需在需要使用
cc.pool来管理的类中实现reuse和unuse方法,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);
}
放入回收池
cc.pool.putInPool(object);
调用此方法将调用对象的
unuse的方法,并将对象放入回收池。从回收池回收对象
var object = cc.pool.getFromPool("MySprite", args);
当你需要从回收池中取出一个对象,你可以调用
getFromPool传入对象的class,以及传入需要传入的初始化参数,这些参数将被传入reuse方法中,cc.pool将自动调用reuse方法。判断回收池中是否有可用对象
var exist = cc.pool.hasObject("MySprite");
该方法用于查找回收池中是否存在
MySprite类的可回收对象。删除回收池中的某个对象
cc.pool.removeObject(object);
将你要删除的对象传入,该对象将会从回收池删除。
清空回收池
cc.pool.drainAllPools();
当你需要清除所有回收池中的对象,例如完成游戏要进入其他页面,旧页面中的可回收对象不再有用了,为避免不必要的内存占用,你可以使用
drainAllPools删除所有的可回收对象。
【cocos2d-js官方文档】十二、对象缓冲池的更多相关文章
- 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述
原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...
- bootbox.js官方文档中文版
bootbox.js官方文档中文版简介:Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Boot ...
- OKHttp 官方文档【二】
OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2.支持同一Host 连接池复用.支持Http缓存.支持自动重定向 等等,有太多的优点. 一直想找时间了解一下 OkHttp ...
- Hui之Hui.js 官方文档
基础 // 判断值是否是指定数据类型 var result = hui.isTargetType("百签软件", "string"); //=>true ...
- Gora官方文档之二:Gora对Map-Reduce的支持
参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...
- 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 ...
- 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象
为何将单例模式移除 在Cocos2d-JS v3.0之前.全部API差点儿都是从Cocos2d-x中移植过来的,这是Cocos2d生态圈统一性的重要一环.可惜的是,这样的统一性也在非常大程度上限制了C ...
- 【cocos2d-js官方文档】二十、moduleConfig.json
概述 该配置文件相当于v2版本号中的jsloader.js. 改造的目的是为了使得配置纯粹化,同一时候也能比較好的支持cocos-console.cocos-utils甚至是用户自己定义脚本工具. 字 ...
- Vue.js官方文档学习笔记(二)组件化应用的构建
组件化应用的构建 组件化应用允许我们使用小型.独立和通常可复用的组件构建大型应用. Vue注册组件 Vue.component('todo-item',{template:'<li>这是个 ...
- 【cocos2d-js官方文档】二、资源管理器Assets Manager
这篇文档将介绍Cocos2d-JS 3.0的一个重量级新特性:资源管理器(仅支持JSB).资源管理器是为游戏运行时的资源热更新而设计的,这里的资源可以是图片,音频甚至游戏脚本本身.使用资源管理器,你将 ...
随机推荐
- Java堆和栈
栈中存基本类型变量数据和对象的引用 堆中存new的对象
- RxJS & Angular
RxJS & Angular https://www.learnrxjs.io/ https://rxjs-cn.github.io/learn-rxjs-operators/ https:/ ...
- 在 Linux 安装 JDK 和 tomcat(菜鸡级别)
安装JDK 卸载 OPENJDK rpm -qa|grep jdk // 查看当前的jdk情况 yum -y remove java java-1.7.0-openjdk* // 卸载openjdk ...
- 【bzoj3196】Tyvj 1730 二逼平衡树 线段树套Treap
题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义 ...
- Codeforces Round #553 F Sonya and Informatics
题目 题目大意 给定一个长为 $n$($2 \le n \le 100$)的01串 $S$ .对 $S$ 进行 $k$($1 \le k \le 10^9$)次操作:等概率地选取两个下标 $i, j$ ...
- CF762E Radio Stations
题目戳这里. 我还以为是KDtree呢,但是KDtree应该也可以做吧. 这是一道数据结构好题.考虑到由于\(K \le 10\),所以我们用两个大vector--\(Left,Right\),\(L ...
- 【BZOJ 3907】网格 组合数学
大家说他是卡特兰数,其实也不为过,一开始只是用卡特兰数来推这道题,一直没有怼出来,后来发现其实卡特兰数只不过是一种组合数学,我们可以退一步直接用组合数学来解决,这道题运用组合数的思想主要用到补集与几何 ...
- async的用法
package com.example.administrator.myapplication; import android.os.AsyncTask; import android.util.Lo ...
- BZOJ 2457 双端队列(思维
2457: [BeiJing2011]双端队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 582 Solved: 253[Submit][Sta ...
- Ubuntu pppoe 拨号上网
-------------蓝色是终端里面的连接方式,可以不看--------------------- ADSL上网,Ubuntu下是可以的,虽然以前没用过拨号上网,不过查了查也不是很麻烦. 打开终端 ...