使用和回收的代码
bowToGo(){
let enemy = this.bowPool.get();
if(enemy == null){
return;
}
enemy.parent = this.node;
enemy.position = cc.p(-110,18);
var bezier = [cc.p(-110, 18 ), cc.p(-161, 35), cc.p(-326, 20)];
var bezierTo = cc.bezierTo(1, bezier);
var skew = cc.skewTo(1,0,3);
var callFunc = cc.callFunc(()=>{
this.bowPool.put(enemy);
// enemy.removeFromParent();
console.log(" this.bowPool.", this.bowPool);
})
enemy.runAction(cc.sequence(cc.spawn(bezierTo,skew),callFunc));
}
我几秒钟调用一次这个函数,结果 这个enemy对象越来越多,库存不够,而且节点上的都没有remove。
我的写法有问题吗
enemy的parent设置为null,再放回对象池试试。
如果别的地方还持有该对象的引用,也没办法回收
我没有在其他的地方引用了,我这里包含了创建 动作 回调函数里面回收,很奇怪啊
还不如自己写个数组保存 ,都一个样
对,我觉得也是 ,我之前就是一个数组,搞不懂为啥,我自己歪到这个胡同了。
抱歉,这个池没问题,是我自己setInterval的时候时间间隔写错了。导致的。
我还是想问一下对象池有没有通过名字存不同对象的第三方 ,我觉得这个需求很迫切啊