Frage

Ich glaube, ich tat dies vor, aber den Code nicht finden kann.

Flash als viele andere grafische Frameworks verwenden, um die obere linke Ecke als Koordinatenursprung (0,0), weil es, wie das zugrunde liegende Speichermodell vereinbarungsgemäß ist.

Aber es wäre für meine Berechnungen wirklich einfacher, wenn der Ursprung in der Mitte der Bühne ist, weil alle das Spiel dreht sich um das Zentrum und eine Menge Trigonometrie verwendet, Winkel usw.

Gibt es eine integrierte Methode wie Stage::setOrigin( uint, uint ); oder so etwas?

War es hilfreich?

Lösung

Erstellen Sie eine MovieClip- oder Sprite und das als Stammobjekt auf der Bühne hinzufügen (statt auf die Bühne der Zugabe) bei Stage.width / 2, Stage.height / 2. Dann, wenn Sie Ihre Objekte im Spiel zu, dass statt hinzuzufügen. Fügen Sie Ihre Spielobjekte bei 0,0 innerhalb des Clips und sie werden auf der Bühne zentriert werden.

Andere Tipps

Erstellen Sie eine Klasse, die die x- und y-Setter und Getter überschreibt die Berechnungen zu behandeln. Etwaige Movieclips auf der Bühne sollte erweitert diese neue Klasse.

package {
    // imports

    public class MyDisplayObject extends DisplayObject
    {

        private var originX:Number = 0;
        private var originY:Number = 0;

        public function MyDisplayObject() {
            // constructor stuff
            originX = stage.stageWidth / 2;
            originY = stage.stageHeight / 2;
        }

        override public function set x($x:Number):Void {
            super.x = originX + $x; // use super to avoid these setters and getters
        }

        override public function set y($y:Number):Void {
            super.y = originY + $y;
        }

        override public function get x():Number {
            return super.x - originX;
        }

        override public function get y():Number {
            return super.y - originY;
        }
    }
}

Bonus:. Sie können die Ursprungswerte ändern, wann immer Sie wollen, so dass es nicht in der Mitte der Bühne sein muss

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top