as2.0で親の変数を得たいのですが。
#base/Aaa.as
import base.*;
class Aaa{
private var myBbb: Bbb;
public var myValue: Number;
public function Aaa(arg1: Bbb, arg2: Number){
myBbb = arg1;
myValue = arg2;
}
public function getBbb(): Bbb{
return myBbb;
}
}
#base/Bbb.as
import base.*;
class Bbb{
public function Bbb(){}
public function display(): Number{
-----ここでAaa.myValueを返す-----
}
}
#main.fla
import base.*;
var myBbb = new Bbb();
var myAaa = new Aaa(myBbb, 10);
trace(myBbb.display());//=> 10と表示したい
上のようにするにはどうすればよいのでしょうか。
基本的なことかもしれませんが、調べても出てきませんでした。
子から親を参照するための変数を用意する必要があると思います。
下記のような感じで如何でしょうか?
また、念のため親が設定されていなかった場合の処理を入れた方が無難かも。
下記のサンプルでは、エラーの場合の戻り値を -1 としています。
(必要なければ消して下さい。)
#base/Aaa.as
import base.*;
class Aaa{
private var myBbb: Bbb;
public var myValue: Number;
public function Aaa(arg1: Bbb, arg2: Number){
myBbb = arg1;
myBbb.myParent = this; //子の親=自分
myValue = arg2;
}
public function getBbb(): Bbb{
return myBbb;
}
}
#base/Bbb.as
import base.*;
class Bbb{
public var myParent: Aaa; //親を参照するための変数
public function Bbb(){}
public function display(): Number{
//-----ここでAaa.myValueを返す-----
if(myParent != null){
return myParent.myValue; //親のmyValueを返す
}else{
return -1;//親がない場合の処理
}
}
}
お礼
よくわかりました。 ありがとうございました。