予想/疑似例:
stage.addEventListener(MouseEvent.CLICK, onClick.someWayToPassParameters(true, 123, 4.56, "string"));
function onClick(e:MouseEvent):void {
trace("Received " + someWayToRetrieveParameters().b/i/n/s + ".");
}
何年もの間 (3~4 年)、すべての Web サイト、フォーラム、ブログ、どこを検索しても、これを行う簡単な方法はないと言われてきました。彼らは通常、次のことを提案します。
リスナーを動的オブジェクトに追加します。値を追加のプロパティに設定し、関数で参照できます (e.target.property / e.currentTarget.property)。
すべてのクラスが動的であるとは限りません。たとえば、スプライトでは機能しません。
オブジェクトのクラスをカスタム クラスで拡張して、プロパティを追加するか、単に動的にします。
毎回まったく新しい微調整クラスを作成する必要があります。
イベント ハンドラーとして無名関数を使用します。
参照はありません(そしてそれは醜いです)。リスナーを削除してリソースを解放するには、arguments.callee を使用して関数自体の内部から行う必要があります。
パラメーターを使用して、イベント ハンドラー内で別の関数を呼び出します。
そして、イベント ハンドラー呼び出しのどこにパラメーターが移動しますか?
イベント ハンドラーをパラメーターと同じスコープに保持します。
完全な意味論的混乱への違反。
イベント ハンドラー定義と addEventListener 呼び出しの両方を、ターゲットとパラメーターを受け取る関数にカプセル化します。
スコープを混在させることができますが、近いものです。ただし、注意が必要です。
...他の多くの推奨される回避策の中でも。
必要なのは、イベント ハンドラーに引数を渡して、通常の関数と同じように関数内で使用できるようにすることだけです!
求めすぎですか?