2011-07-16 4 views
1

addEventListenersとベストプラクティス

メソッドinitListenersを宣言し、sendAndLoadを呼び出すたびに呼び出す方がよいでしょうか?その結果、handleLoadErrorメソッドとhandleLoadSuccesfulメソッドの内部でリスナーを削除する方がよいでしょうか?リスナーはCPU使用量が多いですか?

Btw、私はこのテーマが "主観的であるように見えます"と私は理解していません。あなたが同じURLLoaderクラスを再使用する場合、今

var loader:URLTest = new URLTest(); 
loader.sendLoad("a"); 
loader.sendLoad("b"); 

:あなたのクラスは、同じWebサービスへの複数の呼び出しを行うことができるように設計されているので

答えて

0

、私は間違いなくこれを考慮してくださいオプション2のために行くだろうどちらのコールでも、どのCOMPLETEイベントがどのコールに対応するかを知る方法はありません。

この問題を解決するには、呼び出しごとにURLLoader(+イベントリスナー)を作成し、それを識別できるようにArrayに配置します。サーバーからの応答がCOMPLETEまたはIOERRORの場合、イベントリスナーを削除し、識別されたURLLoader(event.currentTargetと一致するもの)をArrayから削除できます。

パフォーマンスの問題はここでは些細です。イベントリスナーの作成には、完了したら削除することを忘れない限り、パフォーマンスヒットはありません。それ以外の場合、対応するURLLoaderはガベージコレクトされず、メモリに積み重なります。

注:MovieClipから拡張する理由は絶対にありません。クラスでイベントを送出する場合は、EventDispatcherを拡張してください。

+0

呼び出しは1つしかできません。私はsendLoad( "a")を呼び出さず、sendLoad( "b")の後にshorlyします。私はアプリケーションではなくウェブサイトで作業しています。リスナーは何度も(リンクがクリックされるたびに)サーバーを呼び出すために常に使用されます。私はそれらをフリーズすることはできません。 。このコードはFlash Professionalプロジェクトの一時的なメインからのものだったので、私はMovieClipを拡張しました。 event.currentTargetについての非常に興味深いヒント、感謝します。 –

+0

私はあなたがそのように使うべきだと言っているわけではありません。あなたのクラスは、どのように使用するかという観点から、不安定で、より重要なことには安全ではありません。あなたはそれを1つの方法、つまりあなたが意図した方法で使用できるように再設計するべきです。 – RIAstar

+0

なぜ安全でないのですか?あなたが提案したことは、決して起こることはありません。 –

関連する問題