0

ゲームが次のようにロードされると、メイン キャラクター インスタンスとゲーム ボーダー インスタンスを作成するゲーム エンジン クラスがあります。

public class Engine extends MovieClip
{
     var char:Char = new Char(stage);
     stage.addChildAt(char, 1);

     var border1:Border = new Border();
     stage.addChild(border1);

    }

Char クラス内の Engine クラスで作成された変数 border1 にアクセスしたいと思います。これは可能ですか?もしそうなら、どうすればいいですか?

コードを変更してみたので、border1は静的です

static var border1:Border = new Border();

しかし、私は得る

error 1012: The static attribute may be used only on definitions inside a class.
4

1 に答える 1

0

これにはいくつかの方法があります。

1.  Create the border1 and char instances in reverse order and pass the border1 to the char instance to maintain a reference.

var border1:Border = new Border();
stage.addChild(border1);

var char:Char = new Char(stage, border1);
stage.addChildAt(char, 1);

// Char consructor

public function Char(target:DisplayObjectContainter, border:Border):void {
    ...
    this._border = border;
}

// Now you have a reference to the border1 instance within your char instance.

また、border1 インスタンスをコンストラクターに渡さずに、このプロパティを設定するメソッドを追加するだけでこれを行うこともできます。

public function setBorder(border:Border):void {
    this._border = border;
}

// OR

public function set border(border:Border):void {
    this._border = border;
}

もう 1 つのオプションは、Engine インスタンスに境界への参照を維持させ、Engine インスタンスを介した通信を許可することです。例えば、

public class Engine extends MovieClip {

    public var char:Char;
    public var border1:Border;

    public function Engine():void {
        char = new Char(stage);
        stage.addChildAt(char, 1);

        border1 = new Border();
        stage.addChild(border1);
    }

ここで、char インスタンスが engine インスタンスへの参照を持っている場合、border インスタンスは によって参照できますmyEngineInstance.border1

または、border インスタンスを静的にすることもできます。静的にすると、次のような Char インスタンス内のコードが可能になります。

Engine.border1.<whatever>
于 2012-07-23T22:27:59.603 に答える