簡體   English   中英

如何在ActionScript中更改Flash舞台中的坐標原點?

[英]How to change the coordinate origin in Flash's stage with Actionscript?

我想我以前做過,但是找不到代碼。

Flash和其他許多圖形框架一樣,使用左上角作為坐標原點(0,0),因為這是常規內存模型的方式。

但是,如果原點位於舞台中央,對於我的計算而言,這真的會更簡單,因為所有游戲都圍繞該中心旋轉,並使用大量的三角函數,角度等。

是否有一些內置方法,例如Stage::setOrigin( uint, uint ); 或類似的東西?

創建一個覆蓋x和y setter和getter的類以處理計算。 舞台上的任何MovieClips都應擴展此新類。

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

獎勵:您可以隨時更改原點值,因此它不必位於舞台的中心。

創建一個MovieClip或Sprite,並將其作為根對象(而不是添加到舞台)添加到stage.width / 2,stage.height / 2處。 然后,當您向其中添加游戲對象時。 將游戲對象添加到該剪輯內的0,0處,它們將在舞台上居中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM