2009-06-30 3 views
1

私は、このように達成したいものをコーディングすることができます:Flexでは、MXMLコンポーネントの「this」参照のようなものがありますか?

<mx:Button id="someButton" click="doRememberButton(someButton)" ... /> 

が、私は書くことができれば(私は一緒にかなり大規模なUIを入れています)、それは非常に参考になります。今

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

、明白な問題は、 'this'はButtonを指すのではなく、コードがあるファイルによって定義されている主なコンポーネント(例えばVBox)にありますが、 'current' MXMLコンポーネント..

これのための解決策?ありがとう!あなたは、ディスパッチャや他のイベント情報の詳細を取得するには、イベントオブジェクトを使用することができますので、 トム

答えて

2

インラインイベントハンドラは、実際には、コードを巻いています。これと同じように:あなたのケースでは

<mx:Button click="trace(event.target)" /> 

、あなたは例えば、あなたのイベントハンドラの署名を変更する必要があると思います:

private function doRememberButton(event:Event):void 
{ 
    ... 
} 

そして、MXMLコードで:

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

イベントクラスのtargetプロパティは、イベントの元のディスパッチャです。イベントチェーンの現在のターゲットであるcurrentTargetプロパティもあります。これはイベントのバブリングに関するものです。それ

private function doRememberButton(thisBtn:Button):void 
{ 
    ... 
} 

です:Adobe LiveDocs

+0

またはdoRememberButton(event.target)では、既存のコードを変更する必要はありません。 – airportyh

1
private function doRememberButton(ev: Event) { 

//this gives your button 
ev.currentTarget; 


} 
1

でこれについての詳細はこちらuは機能で

<mx:Button id="someButton" click="doRememberButton(event.currentTarget as Button)" /> 

を必要として、より正確な方法で解決があります! :)

関連する問題