AS3 - 在屏幕上移动MovieClip

时间:2011-09-04 13:46:09

标签: actionscript-3

我需要在屏幕上同时移动3个不同的MovieClip。 (从下到上) 使用像Caurina这样的补间类没有的最佳方法是什么?

感谢您的提示。

2 个答案:

答案 0 :(得分:2)

您可以将事件侦听器添加到侦听Event.ENTER_FRAME事件的显示对象的父容器中。在每个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,你会让生活变得更轻松。

答案 1 :(得分:0)

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