0

ActionScript クラスにバインド可能なパブリック プロパティがあり、[Bindable] タグによって生成されるプライベート変数にアクセスしたいと考えています。

たとえば、次のように宣言したとします。

[Bindable] public var yummyTime:String = "abcdefghij";

実行時に、値を という変数に格納します_719695190yummyTime。その名前を予測する方法を知っている人はいますか?

4

2 に答える 2

1

その名前を予測できたとしても。未定義の変数に対してコンパイラ エラーが発生するため、コンパイル時にアクセスできません。なぜアクセスする必要があるのですか?

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 の両方があります。

于 2013-02-03T21:36:48.090 に答える
0

これ:

[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]タグにカスタムイベント名を追加して、チェックを書き出さないでください。

于 2013-02-03T22:45:44.107 に答える