addEventListenerでステートメントをどのように渡しますか?

Ivは、以下のようなactionscriptのaddEventListenerイベントを通して引数を渡そうとしています...

target.addEventListener("pComp", rakeSoil(target));

しかし、私はエラーが発生します。

私はGoogleにしようとしたが運がない:/

あなたがする場合は返信ありがとう:)

1

4 答え

ターゲットはすでにイベントの一部として渡されています。 event.currentTarget または event.target のいずれかが必要です。

他の何かを渡す必要がある場合は、カスタムイベントを作成します。カスタムイベントにプロパティを追加します。

4
追加された

イベントリスナーとして追加のメソッドを追加してみてください:

target.addEventListener ("pComp", targetListener);

...

private function targetListener (event:Event):void {

   rakeSoil (event.currentTarget);

}
2
追加された
または、能力があれば、rakeSoilにイベントを取り込ませ、currentTargetを取り込む代わりにcurrentTargetにアクセスすることができます。
追加された 著者 Evan Ward,

どのようにこれはあなたが望むものです:

   {
        var target:EventDispatcher = ...;
        Function rakeSoil = function (e:Event):void 
        {
           //handle target 
        }

        target.addEventListener("pComp", rakeSoil);
    }

rakeSoilはファーストクラスの関数(またはクロージャ)で、イベントが送出されると呼び出され、その中の 'target'にアクセスできます。

編集:

Have a look at Closure (computer science)

0
追加された

私はいつも匿名の機能が彼らが価値があるよりもトラブルになることを発見しました。標準的なイベントハンドラのコードレイアウトに従うだけです。それはより正式であり、もう少し前向きに努力しますが、あいまいさはなく、今から1年後に頭を浮かせていくと、はるかに読みやすくなります。

//  Target extends EventDispatcher
private var target:Target;

public function listenToTarget();
{
    target = new Target();
    target.addEventListener("pComp", pCompHandler);
}

private function pCompHandler(event:Event):void
{
    target.rakeSoil();
}

今、私はそれをさらに詳しく見ていますが、なぜこのオブジェクトを使ってTargetが内部的に処理できるはずのことをしていますか?

0
追加された