2011-09-04 106 views
1

我有3個不同的影片剪輯,需要在屏幕上同時移動。 (從底部到頂部) 這樣做的最好方法是什麼沒有使用類似Caurina的補間類?AS3 - 在屏幕上移動MovieClip

謝謝你的提示。

+1

嘗試[TweenLite](http://www.greensock.com/tweenlite):'yourClip.y = stage.stageHeight; TweenLite.to(yourClip,1,{y:0});' –

回答

2

您可以將事件偵聽器添加到偵聽事件的顯示對象的父容器中。在每個Event.ENTER_FRAME事件中,您只需減少顯示對象的y屬性(如下例所示)。

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 

    [SWF(width="600", height="500")] 
    public class Main extends Sprite 
    { 
     private var _squares:Vector.<Square>; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 

     }// end function 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      _squares = new Vector.<Square>(); 

      var redSquare:Square = new Square(0xFF0000, 100); 
      redSquare.x = 0; 
      redSquare.y = 400; 
      addChild(redSquare); 

      var greenSquare:Square = new Square(0x00FF00, 100); 
      greenSquare.x = 300; 
      greenSquare.y = 300; 
      addChild(greenSquare); 

      var blueSquare:Square = new Square(0x0000FF, 100); 
      blueSquare.x = 500; 
      blueSquare.y = 100; 
      addChild(blueSquare); 

      _squares.push(redSquare, greenSquare, blueSquare); 

      addEventListener(Event.ENTER_FRAME, onEnterFrame); 

     }// end function 

     private function onEnterFrame(e:Event):void 
     { 
      for each(var square:Square in _squares) 
      { 
       if (square.y > 0) square.y -= 5; 

      }// end for 

     }// end function 

    }// end class 

}// end package 

import flash.display.Sprite; 

internal class Square extends Sprite 
{ 
    public function Square(color:uint, size:Number) 
    { 
     graphics.beginFill(color); 
     graphics.drawRect(0, 0, size, size); 
     graphics.endFill(); 

    }// end function 

}// end function 

我想你會開竅自己但如果你只是用GreenSock的Tweening platform代替。

0

您可以在Flash IDE中使用框架和補間動畫它們。 你也可以通過編程方式自己動畫。將每個影片剪輯放置在屏幕底部,編寫一些代碼,將您的movieClips移動到屏幕頂部並定期(使用Timer,EnterFrame事件監聽器或setInterval)調用,當所有影片剪輯到達時停止調用此代碼頂部(使用Timer.stop(),removeEventListener或clearInterval)。 我不明白爲什麼你可能需要這樣做,因爲有很多補間庫爲你做這一切。