[]关于Sprite回收
// 移除item
for(var i = 0; i < this.numChildren; i++) {
console.log(this.numChildren);
var item = this.getChildAt(i);
if(item instanceof Item) {
item.removeSelf();
item.visible = true;
Pool.recover("item", item);
item.graphics.clear();
}
item的父容器是通过回收池获取的,父容器带有原来的item,现在希望删掉原来的item,添加新的item,使用上面的代码去达不到效果,结果是原有的item和新添加的item叠在了一起,求解决!!
for(var i = 0; i < this.numChildren; i++) {
console.log(this.numChildren);
var item = this.getChildAt(i);
if(item instanceof Item) {
item.removeSelf();
item.visible = true;
Pool.recover("item", item);
item.graphics.clear();
}
item的父容器是通过回收池获取的,父容器带有原来的item,现在希望删掉原来的item,添加新的item,使用上面的代码去达不到效果,结果是原有的item和新添加的item叠在了一起,求解决!!
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
cuixueying
赞同来自:
cwugs
赞同来自:
console.log(this.numChildren);
var item = this.getChildAt(i);
if(item instanceof Item) {
item.visible = true;
Pool.recover("item", item);
item.graphics.clear();
}
执行图示1. 时,会将子元素从父容器中移除,相应的numChildren的值会减少1, 而i的值一直在加,最后的结果就是没有完全移除父容器中的元素.可以在该循环后打印父容器中子元素个数就可得出答案,其实要达到笔者的目的也简单,只需要将i++去掉即可,如下
for(var i = 0; i < this.numChildren; (这里i++不要)) {
console.log(this.numChildren);
var item = this.getChildAt(i);
if(item instanceof Item) {
item.removeSelf();
item.visible = true;
Pool.recover("item", item);
item.graphics.clear();
}