Flash Builder 4 -> addEventListener
addEventListener メソッドは、様々なものにイベントを登録するもの。
[as3]public function addEventListener(type:String,
listener:Function,
useCapture:Boolean = false,
priority:int = 0,
useWeakReference:Boolean = false
):void[/as3]
Adobe® Flex® 4 リファレンスガイド:flash.events addEventListener() メソッド
(addEventListener() メソッドのページはいっぱいあるけど、これ・・・じゃないかな :roll:)
click イベント処理が存在しないテキスト系のコンポーネントに click イベントを登録する。
[as3]myLabel.addEventListener(MouseEvent.CLICK, onClickEvent(myLabel.text));private function onClickEvent(myString:String):void {
Alert.show(myString);
}[/as3]
例えばステージ上に LinkButton を3つ配置して、それぞれにリンク先を設定する場合。
[as3]var myArray:Array = new Array(“http://www.google.com/”, “http://www.yahoo.com/”, “http://www.adobe.com/”);
for (var i:int = 0; i < 3; i++) {
var myLinkButton:LinkButton= new LinkButton();
myLinkButton.text = myArray[i];
myLinkButton.addEventListener(MouseEvent.CLICK, function():void{
navigateToURL(new URLRequest(myArray[i]), "_blank");
});
addElement(myLinkButton);
}[/as3]
これだと、LinkButton がクリックされた時点で myArray[i] を参照するので
意図通りに動作しない。
そこで
[as3]var myArray:Array = new Array("http://www.google.com/", "http://www.yahoo.com/", "http://www.adobe.com/");
for (var i:int = 0; i < 3; i++) {
var myLinkButton:LinkButton= new LinkButton();
myLinkButton.text = myArray[i];
myLinkButton.data = myArray[i]; // ここがミソ
myLinkButton.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void{
navigateToURL(new URLRequest(event.currentTarget.data), "_blank");
});
addElement(myLinkButton);
}[/as3]
5行目の各 LinkButton の data プロパティにURLを格納しておき
クリック時にそれを参照させることで意図通りに動作する。
Flex User Group:addEventListener メソッドについて
こちらで教えていただいた。
Heya im for the first time the following. I discovered this specific table as a consequence I to discover The item faithfully of use & the idea rallied round myself publicized lots. I am hoping to deliver a little back again furthermore foster further like so gkgekfgedfgf
Only wanna tell that this is very useful , Thanks for taking your time to write this. eckgbeffdddf