AS3 - 在屏幕上移动MovieClip
答
您可以将事件侦听器添加到侦听事件的显示对象的父容器中。在每个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)。 我不明白为什么你可能需要这样做,因为有很多补间库为你做这一切。
尝试[TweenLite](http://www.greensock.com/tweenlite):'yourClip.y = stage.stageHeight; TweenLite.to(yourClip,1,{y:0});' –