如何使用Actionscript更改Flash阶段的坐标原点?

时间:2010-01-16 22:23:17

标签: flash actionscript-3 actionscript stage

我想我之前做过这个但是找不到代码。

Flash尽可能多的其他图形框架使用左上角作为坐标原点(0,0),因为它是底层内存模型的惯例。

但如果原点位于舞台的中心,那么我的计算会非常简单,因为所有游戏围绕中心旋转并使用大量的三角,角度等。

是否有一些像Stage::setOrigin( uint, uint );这样的内置方法?

2 个答案:

答案 0 :(得分:3)

创建一个覆盖x和y setter和getter来处理计算的类。舞台上的任何MovieClip都应该扩展这个新类。

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

奖励:您可以随时更改原点值,因此不必位于舞台的中心。

答案 1 :(得分:2)

创建一个MovieClip或Sprite,并将其作为根对象添加到舞台上(而不是添加到舞台上)stage.width / 2,stage.height / 2。然后,当您将游戏对象添加到该对象时。将游戏对象添加到该剪辑内部的0,0处,它们将在舞台上居中。