2017-01-12 4 views
0

배열을 사용하여 액션 스크립트 3에서 확장 원 애니메이션을 생성하고 있습니다. 새 원 원 요소를 그리고 이전 원을 모두 삭제합니다. 모두 타이머에 의해 안내됩니다. 코드는 현재 새로운 원 요소를 그리지 만 이전 원을 삭제하지는 않습니다. 출력은 현재 30 개의 서클로 구성되어 있습니다. 도와주세요. 다음AS3의 원 애니메이션 확대하기

원을 작성하기위한 클래스입니다 : 나 배열에서 제거하지 않을 수도 있지만 사용하는

대신 무대에서 제거되지 않습니다

package 
{ 
    import flash.display.Sprite; 
    import flash.utils.Timer; 
    import flash.events.TimerEvent; 
    import flash.display.Shape; 

    public class SoundWave2 extends Sprite 
    { 
     public function SoundWave2() 
      { 
       var wavearray:Array = new Array(); 
       var waveTimer:Timer = new Timer(1000, 30); 
       var i:int = new int(0); 
       waveTimer.addEventListener(TimerEvent.TIMER, init); 
       waveTimer.start(); 

       function init():void 
          { 
           if (i == 0) 
            { 
             wavearray[i] = graphics.lineStyle(1, 0x0000FF); 
             wavearray[i] = graphics.drawCircle(0, 0, 30); 
             i += 1; 
             trace(i); 
            } 

            else 
            { 
             wavearray[i] = graphics.lineStyle(1, 0x0000FF); 
             wavearray[i] = graphics.drawCircle(0, 0, 30 + i); 
             wavearray.removeAt(i-1); 
             i += 1; 
             trace(i); 
            } 

          } 



     } 
    } 
} 
+0

이미지 대신 코드를 텍스트로 표시하도록 질문을 편집하십시오. –

+0

새 서클을 그리기 전에 graphics.clear()를 호출하십시오. –

답변

1
waveArray.removeAt... 

동그라미의 배열, 그냥 같은 동그라미를 사용하고 명확한 함수를 먼저 호출해야합니다 그것을 다시 그립니다.

myCircle.graphics.clear(); 
myCircle.graphics.beginFill... 
...drawCircle(...); 

이것은 단지 의사 코드이지만 아이디어를 얻을 수 있습니다.

그런 다음 무대를 벗고 원하는 배열을 위해 할
private function destroyArray(arr:Array):void{ 
    for (var i:int = 0; i < arr.length; i++){ 
     arr[i].parent.removeChild[arr[i]]; 
    } 
} 

destroyArray(yourArray); 
: 당신이 무대에서 모든 배열 요소 제거에 대한 추가 정보 요청으로

편집

하지만 "yourArray"대신 원하는 배열을 사용하십시오.

+0

이것은 작동합니다! 스테이지에서 배열 요소를 가져 오는 방법에 대해 생각해 볼 수 있습니까? –

+0

@RobbyNair,이 답변은 ** 작동합니다 ** 그런 다음 '✓' 아이콘을 사용하여 해결책으로 표시하십시오 –

관련 문제