0

イベント パラメータが使用されていない場合、イベント ハンドラからイベント パラメータを削除するメリットはありますか? 次のインスタンスがあります。

<s:Button rollOver="handleRollOver(event)" rollOut="handleRollOut(event)"/>

そして、次のコード:

private function handleRollOver(event:Event):void
{
    // doing stuff
}

private function handleRollOut(event:Event):void
{
    // doing stuff
}

使用されていない場合、イベント オブジェクトを削除する利点はありますか? たとえば、次のように変更します。

<s:Button rollOver="handleRollOver()" rollOut="handleRollOut()"/>

そして、次のコード:

private function handleRollOver():void
{
    // doing stuff
}

private function handleRollOut():void
{
    // doing stuff
}

私が尋ねる理由はいくつかあります。1 つは、イベントがすべての表示オブジェクトを通過するので、イベントを停止して CPU を節約できると聞いたことです (どれだけかはわかりません)。しかし、それには event.stopProp() タイプのコールを呼び出すだけでなく、バ​​ブル時間ではなくキャプチャ時にコールする必要がありますか? また、イベントを入力すると CPU を節約できると聞いたので、event:Event は event:MouseEvent よりも遅くなります。情報源を探すことはできますが、それまでは誰かが私が話していることを知っているかもしれません. ありがとう

4

2 に答える 2

1

メリットはないと思いますが、デメリットもありません。動作し、何もエラーになりません。イベント プロパティにアクセスできないだけです。MXML の場合は、イベントを渡さないようにしてください。そうしないと、エラーが発生します。

とにかく、必要かどうかに関係なく、常にイベントを渡すことをお勧めします。より便利かもしれませんが、コードの柔軟性が低下し、検索時に認識しにくくなります。

イベントを含めずにイベント ハンドラーを呼び出す方法を探している場合は、次のようにすることができます。

private function clickHandler(e:MouseEvent = null):void{

}

イベント引数のデフォルト値を null に設定すると、問題なしでその要件をバイパスできます。この時点で、設定したすべてのイベント ハンドラのデフォルト値は null で、必要に応じて手動で呼び出すことができるように、引数が追加されている場合もあります。

于 2012-10-18T00:10:58.520 に答える
1

後でイベント パラメータを渡すことをお勧めします。たとえば、ログを追加することにした場合や、デバッグを行っている場合などです。これは貴重な情報であり、渡すべきではありません。簡単に捨てられます。

いずれにせよ、イベント バブリングによるパフォーマンスの問題は、しばしば非常に誇張されています。マウス クリック イベントは、クリックごとに正確に 1 回バブリングします。数千の表示オブジェクトをスタックしない限り、システムが遅くなることはありません。もちろん、より頻繁に、または急速に発生するイベントは他にもあります。不具合に気付いた場合は、イベント処理を最初に確認する場所の 1 つにする必要があります。しかし、明らかに必要でない限り、Event.ENTER_FRAME 以外のことを心配するのは時期尚早の最適化のように思えます。

そうは言っても、ハンドラー内の伝播を手動で停止することにより、イベントのバブリングを安全に防ぐことができます。

private function clickHandler ( ev:Event ) : void {
    ev.stopImmediatePropagation();
}
于 2012-10-18T05:34:07.443 に答える