【已解决】关于对象池的管理!

干嘛要用NodePool,我一直用的是数组,手动调用removeFromParent

用数组? 就用数组把节点对象存进去吗? 因为我这边是一直循环使用的,用数组跟对象池的差是别什么呢?

数组需要你手动设置removeFromParent,NodePool丢进去的时候自动帮你removeFromParent

http://docs.cocos.com/creator/manual/zh/scripting/pooling.html
看文档

恕我愚钝! 您的意思也就是说:没有渲染到场景中的时候使用 NodePool 和 用 数组Array 是一样的, 就是在从场景中移除的时候, NodePool 所做的操作会比 Array 多一些的意思吗?

可以理解为NodePool就是封装了Array
NodePool 的put相当于 array的push外加removeFromParent以及其他操作

每次都是new新对象肯定没问题;旧对象如果是不正确的释放了,重用这些后肯定会有问题。所以要看看是不是你不正确的释放了

兄弟,我跟你犯了差不多的错误,查了3小时才查出来。我把node节点从父节点move掉了再put进对象池。然后触摸事件全都不见了,哈哈哈:joy:

1赞

问下,这个怎么重置啊

你一开始是什么状态,你就赋值什么状态回去,比如你有个属性,一开始是false,但是动画过程中改为true,并且放进了缓存池有拿出来用,这时候你拿出来的那个属性就是true,而你需要的是false,这就需要你放进缓存池之前把它的值赋值为初始值

我使用是put()的时候,为什么提示我没有找到put属性

你可以打断点,去看看goldPool里面有什么方法,看看goldPool是不是你要的类型,看看是不是this指向问题

应该是没有问题的,我用这个已经创建成功了,用put清除的时候出问题了

你要在这里打断点

创建成功了,不一定代表this.goldPool就是你创建的那个,都不在一个范围内的,this的指向是不同的

这里报错都说了,this.goldPool是undefined

是谁在调用destroyEnemy方法,this就指向谁

谢谢大佬,找到了,果然是,我创建的时候this有goldpool,等我清除的时候goldpool就消失了

js里面的this概念要搞清楚,可以省事很多的

那这个this的指向怎么改,现在我找不到原来的this了,我刚刚用js不久

可以绑定this,用bind()函数,或者直接把你想要的this当成参数传递