使用EaselJS和数组的bug

时间:2013-08-01 19:13:19

标签: javascript arrays easeljs

我在删除画架上的对象数据时遇到了这个问题。

我有一个画布,我在其中创建一个名为overlay的片段,然后我有能力创建和删除称为“种子”的小点。我想要做的是将x,y坐标存储到数组中种子的位置在叠加图像的命中区域。

这是代码:

     function addSeed(){

               seed = new createjs.Bitmap("seed.jpg");
               seed.alpha = 0.5;
               seed.x = stage.mouseX-10 ;
               seed.y = stage.mouseY-10 ;
                       addSeedData(); 
                       stage.addChild(seed);
                       stage.update(); 
                       storex.push(seed.x); 
                       storey.push(seed.y);
                       i+=1;
                      }


     function removeSeed(){
            if(stage.getNumChildren()>childCounter){


            removeSeedData();
            storex.pop(seed.x);
            storey.pop(seed.y);

            stage.removeChildAt(stage.getNumChildren()-1);
            stage.update();

                                        }
         }

     function addSeedData(){
           overlayPt = seed.localToLocal(10, 10, overlay);
           if (overlay.hitTest(overlayPt.x, overlayPt.y)== true)
                {
                 overlaySeedDatax.push(seed.x);
                 overlaySeedDatay.push(seed.y);
                }
           }
     function removeSeedData(){

          if (overlay.hitTest(overlayPt.x, overlayPt.y)== true)
                {
                 overlaySeedDatax.pop(seed.x);
                 overlaySeedDatay.pop(seed.y);
                }
          }

我可以准确地添加和移除种子从覆盖对象的内部但是当我在里面添加一个种子然后添加另外一个外部而不是添加内部然后第四个外部...然后删除所有种子,2个种子仍然保留在overlaySeedData数组

1 个答案:

答案 0 :(得分:0)

我认为您的问题在于您使用pop功能。此函数仅删除数组的最后一个元素。所以看起来你可能正在移除最后一个数组元素,而不是你真正想删除的数组元素。删除元素时,您应该通过指定其索引来实现它。

How do I remove a particular element from an array in JavaScript?

您可以查看splice函数,了解按索引删除数组元素的方法。