cocos对象池的使用
2024-08-21 22:40:45
enemy.js
cc.Class({
extends: cc.Component, properties: { enemySpeed: 0, //设置加速度
}, //初始化当前节点的y坐标
init: function () {
this.node.y = 0;
},
onLoad () { }, start () { }, update (dt) {
this.node.y += this.enemySpeed; //每帧运动
},
});
game.js
cc.Class({
extends: cc.Component, properties: { enemyPrefab: {
default: null,
type: cc.Prefab,
},
}, createEnemy: function (parentNode) {
let enemy = null;
if (this.enemyPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
enemy = this.enemyPool.get();
} else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建
enemy = cc.instantiate(this.enemyPrefab);
}
enemy.parent = parentNode; // 将生成的敌人加入节点树
this.enemyNew = enemy;
enemy.getComponent('enemy').init(); //接下来就可以调用 enemy 身上的脚本进行初始化,
//如果不初始化enemy,在从对象池中获取this.enemyPool.get();的时候,该enemy身上的脚本参数还接着上次调用的时候;
//因为执行this.enemyPool.put();只是把enemy重新放回对象池,并不是真正销毁;执行this.enemyPool.get()又可以重新获取出来;
}, //监听键盘
setInputControl: function () {
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); }, onKeyDown: function (event) { switch(event.keyCode) {
case cc.KEY.t:
this.enemyPool.put(this.enemyNew); //点击键盘T键销毁敌人
break;
case cc.KEY.c:
this.createEnemy(this.node); //点击C键创建敌人
break;
}
}, onLoad () {
this.enemyPool = new cc.NodePool(); //new一个对象池出来
this.setInputControl(); //加载场景后持续监听键盘 }, // start () {
// console.log(this.enemyPool.size());
// this.createEnemy(this.node); // }, update (dt) {
console.log(this.enemyPool.size());
},
});
最新文章
- Enterprise Solution 生成实体数据访问接口与实现类型 Code Smith 6.5 模板文件下载
- DevExpress VGridControl 行宽自动调整
- 规则引擎集成接口(七)规则引擎调用Java类
- LeetCode:Ransom Note_383
- PowerDesigner 16.5
- [LintCode] Reverse Nodes in k-Group 每k个一组翻转链表
- MapReduce多线程下的错误
- BZOJ3808 : Neerc2012 Labyrinth of the Minotaur
- python实现跳板机
- PAT1013. Battle Over Cities(邻接矩阵、邻接表分别dfs)
- react 资源汇总
- Spring boot将配置属性注入到bean类中
- inlay检验标准
- 河南多校大一训练赛 E 开餐馆
- sqlserver2008用bat脚本备份时报错因为库名有中横杠【原创】
- Cocos2d-x 多分辨率支持
- docker-安装技巧
- Jmeter的使用简介及实例
- [Android]Animation 动画介绍和实现
- appium+python自动化61-中文输入乱码问题解决
热门文章
- 转载 C#开发串口总结,并提炼串口辅助类到公用类库中
- postgresql 建模文件 LDM 转成PDM 生成 SQL问题
- 联想(Lenovo)小新310经典版进bios方法
- Python面试题之解读Socketserver &; Tcpserver
- MVC readioButtonList的创作过程及运用
- 20145314郑凯杰 《Java程序设计》实验四 实验报告
- 20135302魏静静Linux内核分析第二周学习总结
- JavaScript中字符操作之大小写转换
- Net_Prop 之 CTerrorPlayer 属性
- 在eclipse搭建python开发环境