2011-03-30 5 views
1

私はsetter呼び出しの後に呼び出されるカスタム関数が必要です。アイデアはありますか? PROPERTY_CHANGEリスナーを持つ変数のObjectProxyは唯一の方法ですか?セッターで "聴く"ための最善の方法は何ですか?

おかげ

+0

は、作成したクラスの一部、または既存のクラスのセッターですか? – Chris

+0

セッターは私が作成したクラスの一部です。 –

+0

なぜsetter関数内の関数を呼び出さないのですか?私はあなたの問題を理解していません...いくつかのコードが役立つでしょう。 –

答えて

1

は、あなたのクラスからのEventDispatcherを拡張し、その後、あなたのsetメソッドで、単にイベントを送出。

class MyClass extends EventDispatcher { 
    public static const PROPERTY_CHANGED:String = "PROPERTY_CHANGED"; 

    private _foo:Number = 0; 

    public function MyClass() { } 

    // else where 
    public function set foo(value:Number):void { 
     _foo = value; 
     dispatchEvent(new Event(PROPERTY_CHANGED)); 
    } 


} 
+0

ちょうど私が私のものを提出しようとしていたときにあなたの答えを投稿しました;) – goliatone

+0

@goliatone - 申し訳ありませんが、私はそれが起こるときに嫌い、あなたが質問から評判を分けることができないのは残念です。 – Chris

+0

Hehehe、心配しないでください – goliatone

1

私は実際に私が少しより宣言し、きれいだと思いメカニズムを好む:

[Bindable] 
public class MyClass 
{ 
    public var foo:Number; 

    public function MyClass() { 
     BindingUtils.bindSetter(whenFooIsSet, this, "foo"); 
    } 

    private function whenFooIsSet(newValue:Number) { 
    } 
} 
+0

これは、フレックスアプリケーションを開発している場合にのみ機能することに注意してください。また、[Bindable]はデフォルトで[Bindalbe(event = "propertyChange")]:http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_8.html –

+0

@Stephen Bailey:合意、これはFlexでのみ動作します...しかし、この質問はFlexでタグ付けされました。 –

+0

Ahhはい*赤面*。新しいデベロッパーのために、純粋なAS3とフレックスの間の線を参照することは、FlexSDKを使用しているので大変です。だから、おそらく誰かを助けるでしょう。 –

関連する問題