0

ムービークリップがあり、それにパン機能を追加します。ムービークリップが参照できる独自のクラスとして、パンを追加したいと思います。

パン クラスを作成するときに、ムービークリップをそれに送信して、その位置プロパティを常に保持できるようにします。

パンクラスのステージにアクセスする最良の方法は何ですか? ステージの mouseX、mouseY、stageWidth、stageHeight を取得できる必要があります。

現在、パン クラスでスプライト オブジェクトを拡張し、パンしたいムービークリップの子として実際に追加しています。

ステージ自体も同様にパンクラスに送信する方が良いでしょうか、それともこれよりも良い方法はありますか?

4

1 に答える 1

1

呼び出されたステージへの変更を管理するシングルトン クラスを作成し、ステージStageManagerへの参照を渡して初期化します。

//StageManager.as

import flash.display.Stage;

public class StageManager()
{
    //publicly accessible singleton instance
    public static var instance:StageManager = new StageManager();

    private var m_stage:Stage;

    //I'm using a custom getter and setter in just in case you need perform some other 
    //initialization when the stage gets set...
    public function set stage(stg:Stage):void
    {
        m_stage = stg;
    }

    public function get stage():Stage
    {
        return m_stage;
    }

}

次に、メインコントローラークラスのような別の場所:

StageManager.instance.stage = this.stage; 

これで、ステージとそのプロパティにグローバルにアクセスできるようになりましたStageManager:

var stageW:int = StageManager.instance.stage.stageWidth; 

このようにして、Pan クラスだけでなく、将来的に必要なときにいつでもグローバル ステージにアクセスできます。かっこいいでしょ?

Pan クラスの設計方法については、 @The_asMan - extends に同意しますMovieClip。つまり、1 つのPanインスタンスが複数のインスタンスを制御するMovieClip場合を除き、それを独自のものとして持つ方がおそらく理にかなっています (上記の方法で)。

于 2012-06-12T21:41:27.253 に答える