基本的に私はこの機能を持っています:
private function clickURL(url:String):Function{
trace("Function has been instantiated");
return function(event:MouseEvent):void{
trace("Function has been run");
ExternalNavigation.newBrowserWindow(url);
}
}
この関数の目的は、URL を取得し、その URL を別の関数に入れ、その関数を返すことで、次のように入力するだけです。
urlButton.addEventListener(MouseEvent.CLICK, clickURL("http://test.com"));
関数 clickURL は、イベント パラメータを持つ関数を addEventListener 関数に返します。そのようにして、ボタンを押したときに開く URL を指定します。
これを使用した場合の出力は次のとおりです。
//Function has been instantiated
ボタンをクリックしても、internatl 関数は実行されません。そこで、何も見逃していないことを確認するために、偽のイベントで試してみようと思いました.
var clickTest:Function = clickURL("http://stackoverflow.com");
clickTest(new MouseEvent(MouseEvent.CLICK));
出力は次のとおりです。
//Function has been instantiated
//Function has been run
ご覧のとおり、両方の関数が実行されています。addEventListenerではなく、なぜこれが機能しているのか、誰かが考えましたか?
よろしくZ