2 Stimmen

AS3 - Bewegen Sie den MovieClip über den Bildschirm

Ich habe 3 verschiedene MovieClips, die ich gleichzeitig über den Bildschirm bewegen muss. (Von unten nach oben) Wie kann ich das am besten machen, ohne eine Tweening-Klasse wie Caurina zu verwenden?

Danke für die Tipps.

2voto

Taurayi Punkte 3199

Sie könnten einen Ereignislistener zum Elterncontainer der Anzeigeobjekte hinzufügen, der auf das Ereignis Event.ENTER_FRAME hört. Bei jedem Event.ENTER_FRAME-Ereignis vermindern Sie einfach die y-Eigenschaft der Anzeigeobjekte wie im folgenden Beispiel.

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

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

        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.();

            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

Ich denke, es wäre einfacher für Sie, wenn Sie einfach die Tweening-Plattform von Greensock's verwenden würden.

0voto

borisgolovnev Punkte 1760

Sie können sie im Flash-IDE mit Frames und Tweenings animieren. Sie können sie auch programmatisch selbst animieren. Platzieren Sie jeden Filmclip am unteren Bildschirmrand, schreiben Sie etwas Code, der Ihre Filmclips ein wenig nach oben bewegt, und rufen Sie diesen Code regelmäßig auf (Verwendung von Timer, EnterFrame-Ereignislistener oder setInterval). Hören Sie auf, diesen Code aufzurufen, wenn alle Filmclips oben angekommen sind (Verwendung von Timer.stop(), removeEventListener oder clearInterval). Ich sehe nicht ein, warum Sie das tun müssten, da es viele Tweening-Bibliotheken gibt, die das alles für Sie erledigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X