当我点击它们时,我正在向一些容器(共10个容器)添加硬币(位图)。现在我要一个接一个地取出硬币。例如,如果我在舞台上的一个Shape上单击3次,而不是创建3个硬币并将它们放入容器中。现在,如果我在删除按钮(也在舞台上)上单击一次,它应该删除添加到容器中的最后一个硬币,依此类推。
以下是我尝试的方式: - >“evt.target”是一个容器
this.coin= new createjs.Bitmap(images.jeton_image);
this.coin.value = this.coin_index;
this.coin_array.push(this.coin);
this.coin_index++;
this.coin.regX = 50;
this.coin.regY = 50;
evt.target.addChild(this.jetons);
this.target_arr.push(evt.target);
现在我将如何移除硬币:
this.target_arr[this.target_arr.length].removeChild(this.coin);
我的问题是我无法从10个容器中取出硬币。 我做错了什么?
答案 0 :(得分:2)
我在这里看到的问题是存在于您试图操纵的数组索引的位置:
第一阶段
如果使用push将此数据添加到Array中,则数据将添加到索引的末尾
让我们说:
var a=[]; //a.length would be 0 and you can't position any index inside
现在当你向它推送一些数据时:
a.push(1);//a.length=1
[ 1 ]
^
index:0
a.push(2);//a.length=2
[ 1 , 2 ]
^ ^
index:0 1
a.push(3);//a.length=3
[ 1, 2, 3 ]
^ ^ ^
index:0 1 2 //when trying to make that a[a.length]
//would give error as the maximum position
//reside in the index 2 not 3
所以这个:
this.target_arr[this.target_arr.length].removeChild(this.coin);
应该是这样的:
this.target_arr[this.target_arr.length-1].removeChild(this.coin);
第二阶段
你缺少的是:
this.coin_array.pop(this.coin);
this.target_arr.pop(evt.target);
在将子节点移除到收缩阵列时删除最新元素 因为在内存中你的数组仍然由10个元素组成,所以你应该通过在删除图像的同时弹出最新元素来缩小它