2012-03-08 5 views
0

私は入力枠で簡単なURLリクエストをしようとしていますが、複数回実行されているようですか?Enter Frame firingを複数回停止するにはどうしたらいいですか?

handleLoadSuccessfulのイベントハンドラを削除しようとしましたが、これは無限に実行を停止するようですが、停止する前に約10回実行しています。

どうすれば1回だけ発火させることができますか?

addEventListener(Event.ENTER_FRAME, onLoadHandler); 
function onLoadHandler(event:Event) { 
    var scriptRequest:URLRequest = new URLRequest("http://ad.doubleclick.net/clk;254580535;19110122;t?http://www.gamespot.com.au/Ads/gswide/hp/1x1.gif"); 
    var scriptLoader:URLLoader = new URLLoader(); 
    var scriptVars:URLVariables = new URLVariables(); 

    scriptLoader.addEventListener(Event.COMPLETE, handleLoadSuccessful); 
    scriptLoader.addEventListener(IOErrorEvent.IO_ERROR, handleLoadError); 

    scriptRequest.method = URLRequestMethod.POST; 
    scriptRequest.data = scriptVars; 

    scriptLoader.load(scriptRequest); 

    function handleLoadSuccessful($evt:Event):void { 
     trace("Message2 sent."); 
     removeEventListener(Event.ENTER_FRAME, onLoadHandler); 

    } 

    function handleLoadError($evt:IOErrorEvent):void { 
     trace("Message1 failed."); 
    } 
} 
+2

Uhhh ..... ENTER_FRAMEは*すべてのフレーム*と呼ばれることを意味していますか?あなたは別のイベントの後にいると思います。 – Marty

+0

@ MartyWallace本当に!ありがとう、それは、すべて、すべてを説明します。 – muudless

+1

うまくいって、 'ENTER_FRAME'は、ゲームのすべてのオブジェクトを更新するように、フレームごとにコードを実行するために一般に使用されます。 – Marty

答えて

0

ENTER_FRAMExは、ドキュメントのフレームレートである毎秒x回、発射されます。

あなたのリスニング関数内のコードは、実際にはイベントリスナーやリスニング関数を必要としないと思っています。その関数内にあるものを一度だけ必要とする場合は、それ自身。

また、すべてをinit()ファンクションに移動し、それを1回呼び出すこともできます。

また、あなたの関数handleLoadSuccessful()handleLoadError()は、別の関数(あなたのケースではonLoadHandler())内に定義しないでください。

関連する問題