Как изменить начало координат на сцене Flash с помощью Actionscript?

StackOverflow https://stackoverflow.com/questions/2079104

Вопрос

Кажется, я делал это раньше, но не могу найти код.

Flash, как и многие другие графические платформы, использует верхний левый угол в качестве начала координат (0,0), поскольку по соглашению именно так работает базовая модель памяти.

Но для моих расчетов было бы проще, если бы начало координат было в центре сцены, потому что вся игра вращается вокруг центра и использует много тригонометрии, углов и т. д.

Есть ли какой-нибудь встроенный метод, например Stage::setOrigin( uint, uint ); или что-то вроде того?

Это было полезно?

Решение

Создайте MovieClip или Sprite и добавьте его на сцену в качестве корневого объекта (вместо добавления в сцену) по адресу stage.width/2, stage.height/2.Затем, когда вы вместо этого добавите к нему свои игровые объекты.Добавьте игровые объекты в точку 0,0 внутри этого клипа, и они будут центрированы на сцене.

Другие советы

Создайте класс, который переопределяет методы установки и получения x и y для обработки вычислений.Любой мувиклип на сцене должен расширять этот новый класс.

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;
        }
    }
}

Бонус:вы можете изменить исходные значения в любое время, поэтому они не обязательно должны находиться в центре сцены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top