使用鼠标“单击”添加和删除位图图像 - JavaScript / CreateJS

时间:2014-01-06 15:16:50

标签: javascript html5 bitmap containers easeljs

当我点击它们时,我正在向一些容器(共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个容器中取出硬币。 我做错了什么?

1 个答案:

答案 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个元素组成,所以你应该通过在删除图像的同时弹出最新元素来缩小它