ActionScript クラスにバインド可能なパブリック プロパティがあり、[Bindable] タグによって生成されるプライベート変数にアクセスしたいと考えています。
たとえば、次のように宣言したとします。
[Bindable] public var yummyTime:String = "abcdefghij";
実行時に、値を という変数に格納します_719695190yummyTime
。その名前を予測する方法を知っている人はいますか?
ActionScript クラスにバインド可能なパブリック プロパティがあり、[Bindable] タグによって生成されるプライベート変数にアクセスしたいと考えています。
たとえば、次のように宣言したとします。
[Bindable] public var yummyTime:String = "abcdefghij";
実行時に、値を という変数に格納します_719695190yummyTime
。その名前を予測する方法を知っている人はいますか?
その名前を予測できたとしても。未定義の変数に対してコンパイラ エラーが発生するため、コンパイル時にアクセスできません。なぜアクセスする必要があるのですか?
Bindable イベントが定義された get/set メソッドにパブリック変数の定義を展開することで、やりたいことは何でも達成できると思います。このような:
private var _yummyTime : String = 'abcdefghij'
[Bindable(event='yummyTimeChanged']
public function get yummyTime():String{
return _yummyTime;
}
public function set yummyTime(value:String):void{
_yummyTime = value;
dispatchEvent(new Event('yummyTimeChanged'));
}
コンポーネント内には、プライベート変数 _yummyTime とパブリック変数 yummyTime の両方があります。
これ:
[Bindable] public var yummyTime:String;
書くことと同じです:
private var _yummyTime:String;
[Bindable]
public function get yummyTime():String
{
return _yummyTime;
}
public function set yummyTime(value:String):void
{
_yummyTime = value;
}
切り取られた2番目のコードでは、プライベート変数のゲッターとセッターを明示的に書き出しました。
また、[Bindable]タグは、次のようにsetter関数に特別なチェックを追加することにも注意してください。
private var _yummyTime:String;
[Bindable(event="yummyTimeChange")]
public function get yummyTime():String
{
return _yummyTime;
}
public function set yummyTime(value:String):void
{
if( _yummyTime !== value)
{
_yummyTime = value;
dispatchEvent(new Event("yummyTimeChange"));
}
}
そのチェックが必要ない場合は、if(_yummyTime!== value)で、最後の例のように[Bindable]タグにカスタムイベント名を追加して、チェックを書き出さないでください。