2013-08-01 4 views
0

easelJs의 개체 데이터를 제거하는 데이 문제가 있습니다.EaselJS 및 배열을 사용하는 버그

오버레이라고하는 세그먼트를 만든 캔버스가 있는데, 그 다음에 씨앗이라는 작은 점을 만들고 삭제하는 능력이 있습니다. 내가하려고하는 것은 x, y 좌표를 배열에 저장하는 것입니다. 씨앗 장소는 오버레이 이미지의 hitarea에

는 코드입니다.

 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); 
       } 
      } 

내가 정확하게 추가 한 다음 다른 추가 나는 내에서 하나의 씨앗을 추가 할 때 오버레이 객체 butttt 인사이드에서 씨앗을 제거 할 수 있습니다 내부를 추가하고 네 번째 바깥 쪽을 추가하는 것보다 ... 다음 모든 시드를 삭제하면 2 개의 시드가 여전히 overlaySeedData 배열에 남아 있습니다.

답변

0

귀하의 문제는 pop 기능의 사용과 관련이 있다고 생각합니다. 이 함수는 배열의 마지막 요소 만 제거합니다. 그래서 당신이 정말로 제거하려고했던 요소가 아닌 마지막 배열 요소를 제거하는 것처럼 보입니다. 요소를 삭제할 때는 색인을 지정하여 실제로 수행해야합니다.

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

당신은 자신의 인덱스 배열 요소를 제거하는 방법을 스플 라이스 기능을 확인할 수 있습니다.