2017-01-12 10 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、もしこの答えが**働いているなら、それを '✓'アイコン –

関連する問題