2011-12-05 1 views
2

私はOKの質問に言いましたことを願っています。Flexで現在のコンポーネントのインライン関数を呼び出すときに 'self'または 'this'を渡す方法はありますか?

コンポーネントの 'id'を渡すことができますが、もっと一般的な方法があるかどうかはわかります。私は 'this'を使用しようとしましたが(下記の例を参照してください)、 'this'キーワードはアプリケーションを参照しています。

例:

<mx:Button click="someFunc(this)"/> 

そして、次の関数呼び出しが動作しない(それは間違っているタイプだと):

someFunc(comp : UIComponent) : void { 
    comp.label = 'Change label'; 
} 

私は20個のコンポーネントを持っている場合は、私のことができるようにしたいのですが異なるコンポーネントに対して 'id'を使用せずに同じ関数を呼び出します。

方法はありますか?

答えて

4

「this」というキーワードはアプリケーションを指します。 MXMLコンポーネントで

、このトップレベルの 『タグ」のキーワードが参照する』;。多くの状況で適用されません

あなたの場合、私はクリックイベントに渡しますそしてコンポーネントがクリックされた把握するために、ターゲットやは、currentTargetプロパティを使用します。

<mx:Button click="someFunc(event)"/> 

someFunc(event:MouseEvent) : void { 
    trace(event.target); 
    trace(event.currentTarget); 
    (event.target as Button).label = "Change Label"; 
} 

私はあなたがターゲットを必要とするだろうと確信している、それは常にイベントを送出したコンポーネントになりますよう

+0

。 'target'はwではありません'mouseChildren'が有効になっている場合は、そうでない可能性が高くなります。しかし、 'currentTarget'は、リスナーがアタッチされているコンポーネントであることが保証されています。 – merv

+0

ボタンコンポーネントは例として実際に使用されました。それは、私が「これ」または「自己」を使用したいと思っていたコンポーネントにとって、より多くのものでした。私はいつもイベントハンドラのtargetとcurrentTargetの変数を忘れています...これはFlexで 'this'または 'self'に最も近いと思います。ちょっとしたメモ...私は常に、event.targetまたはevent.currentTargetをいつ使うのか混乱しています! 回答ありがとうございます@Flextras.com –

+0

@merv入力していただきありがとうございます。はい、event.currentTargetは機能します。 –

関連する問題