Domanda

Credo di aver fatto questo prima, ma non riesco a trovare il codice.

Flash come molti altri framework grafiche usano l'angolo in alto a sinistra come l'origine (0,0) coordinare, perché è come il modello di memoria di base è per convenzione.

Ma sarebbe davvero semplice per i miei calcoli, se l'origine è stata al centro del palco, perché tutto il gioco ruota intorno al centro e usa un sacco di trigonometria, angoli, ecc

C'è qualche metodo incorporato come Stage::setOrigin( uint, uint ); o qualcosa del genere?

È stato utile?

Soluzione

Crea una MovieClip o Sprite e aggiungere che alla fase come oggetto principale (invece di aggiungere allo stage) presso Stage.width / 2, Stage.height / 2. Poi, quando si aggiungono gli oggetti di gioco per che, invece. Aggiungere gli oggetti di gioco al 0,0 all'interno del clip e saranno centrate sul palco.

Altri suggerimenti

Creare una classe che sostituisce il x e y setter e getter per gestire i calcoli. Eventuali MovieClips sul palco dovrebbe estende questa nuova classe.

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:. È possibile modificare i valori di origine ogni volta che si desidera, in modo che non ha bisogno di essere al centro della scena

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top