2011-11-09 16 views
0

変数をバインドして、変更があれば自動的にラベルを更新したいと思います。ラベルへのバインディングの更新

var disp:String = "00:00:00"; 
var lb:Label = new Label(); //Add Label to an "ContentGroup" container. 
lb.text = totalTime; 
addElement(lb); 

disp="00:00:01"; //New timing 

BindingUtils.bindProperty(totalTime, "text", disp, "text"); 

どうすればよいですか?

+1

ActionScriptでこれを行う必要がありますか? – JeffryHouser

+0

DispatchEventを使用するとgetChildByNameよりも効率的ですが、それについてはわかりませんか?どのような状況で私はそれを使用すべきですか? –

答えて

1

まず、質問を明確にしたいと思います。ラベルlbdispにバインドしてから、後でdispが変更されると、lb.textが変更されますか?

  1. 代わりにMXML(バインディングメカニズムと完全に一致する)を使用しないのはなぜですか?

  2. 実際にActionscriptを使用したい場合は、いくつか注意が必要な点があります。まず、「ホスト」プロパティをバインド可能にする必要があります(先頭に[Bindable]タグを追加)。次に、BindingUtils.bindPropertyは、2つの値を直接バインドする必要があります。この場合、次のコードへの変更は動作します:

    [Bindable] public var disp: String = "00:00:00"; 
    
    private function initBinding(): void { 
    
    var lb: Label = new Label(); 
    
    addElement(lb); 
    
    BindingUtils.bindProperty(lb, "text", this, "disp"); 
    
    } 
    

ちなみに、私はいつも、可能であればバインディングを使用して避けています。単純なケースでプロパティを手動で更新すると、ファイルサイズとパフォーマンスの両方が節約されます。

+0

bindPropertyパラメータがどのように使用されているのか分かります。素晴らしいヒントをありがとう、代わりにgetChildByNameメソッドを使用します。 –

関連する問題