0

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

我有一个画布,在其中创建了一个称为覆盖的段,然后我可以创建和删除称为“种子”的小点。我要做的是仅在种子位置为时将 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);
                }
          }

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

4

1 回答 1

0

我认为您的问题在于您对该pop功能的使用。此函数仅删除数组的最后一个元素。所以看起来您可能正在删除最后一个数组元素,而不是您真正打算删除的那个。删除元素时,您应该通过指定其索引来真正做到这一点。

如何从 JavaScript 中的数组中删除特定元素?

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

于 2013-08-03T12:31:37.050 回答