0

以前にこれを行ったと思いますが、コードが見つかりません。

他の多くのグラフィカルフレームワークと同じようにFlashは、座標原点(0,0)として左上隅を使用します。これは、基になるメモリモデルが慣例によりどのようになっているためです。

しかし、原点がステージの中央にあると、すべてのゲームが中央を中心に回転し、多くの三角法や角度などを使用するため、計算が非常に簡単になります。

そのような組み込みのメソッドはありStage::setOrigin( uint, uint );ますか?

4

2 に答える 2

3

計算を処理するためにxおよびyセッターとゲッターをオーバーライドするクラスを作成します。ステージ上の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;
        }
    }
}

ボーナス:原点の値はいつでも変更できるため、ステージの中央に配置する必要はありません。

于 2010-04-29T19:35:49.833 に答える
2

MovieClipまたはSpriteを作成し、stage.width / 2、stage.height / 2で(ステージに追加するのではなく)ルートオブジェクトとしてステージに追加します。次に、代わりにゲームオブジェクトをそれに追加します。そのクリップの内側の0,0にゲームオブジェクトを追加すると、ステージの中央に配置されます。

于 2010-01-16T22:51:36.363 に答える