これにはいくつかの方法があります。
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>