Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用鼠标添加和删除位图图像;单击";-JavaScript/CreateJS_Javascript_Html_Bitmap_Containers_Easeljs - Fatal编程技术网

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

使用鼠标添加和删除位图图像;单击";-JavaScript/CreateJS,javascript,html,bitmap,containers,easeljs,Javascript,Html,Bitmap,Containers,Easeljs,当我单击一些容器(总共10个容器)时,我会将硬币(位图)添加到其中。现在我想把硬币一个接一个地取下来。例如,如果我在我的舞台上点击一个形状3次,我就会创造3枚硬币并将它们放入一个容器中。现在,如果我在移除按钮上单击一次(也在舞台上),它应该移除添加到容器中的最后一枚硬币,依此类推 以下是我如何尝试的: -->“evt.target”是一个容器 this.coin= new createjs.Bitmap(images.jeton_image); this.coin.value = this.co

当我单击一些容器(总共10个容器)时,我会将硬币(位图)添加到其中。现在我想把硬币一个接一个地取下来。例如,如果我在我的舞台上点击一个形状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个容器中取出硬币。
我做错了什么?

我在这里看到的问题在于您试图操纵的数组索引的位置:

第一阶段

如果使用push将此数据添加到数组中,数据将添加到索引的末尾

比如说:

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

“我无法从10个容器中删除硬币。”我没有得到多少这意味着什么?我在舞台上有10个形状,每个形状都有一个容器。因此,如果我点击第一个形状,硬币将被添加到第一个容器中,依此类推。我希望你现在明白我的问题的意思。我想问题是你不能按顺序取出硬币,是吗?是的,这是我的问题,因为我可以单击第一个形状,而不是第三个形状或最后一个形状。好的,现在清除,从代码中看不到这是什么。target\u arr指的是什么?非常感谢你救了我一天:)我为此挣扎了一段时间。现在它工作得很好!如果这有助于你提高投票率,我想你现在可以提高投票率了:)