AS3 - 在屏幕上移动MovieClip

问题描述:

我有3个不同的影片剪辑,需要在屏幕上同时移动。 (从底部到顶部) 这样做的最好方法是什么没有使用类似Caurina的补间类?AS3 - 在屏幕上移动MovieClip

谢谢你的提示。

+1

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

您可以将事件侦听器添加到侦听事件的显示对象的父容器中。在每个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代替。

您可以在Flash IDE中使用框架和补间动画它们。 你也可以通过编程方式自己动画。将每个影片剪辑放置在屏幕底部,编写一些代码,将您的movieClips移动到屏幕顶部并定期(使用Timer,EnterFrame事件监听器或setInterval)调用,当所有影片剪辑到达时停止调用此代码顶部(使用Timer.stop(),removeEventListener或clearInterval)。 我不明白为什么你可能需要这样做,因为有很多补间库为你做这一切。