1

私は毎秒新しいメッセージを読み込もうとしていますが、新しいメッセージは読み込まれるたびに2倍になります.phpが実行される前にタイマーが完了するためだと思いますか? だから私は追加しようとしました

  if (checker != "" + idstored + "done") {
checker =  "" + idstored + "done";

タイマーが完了すると、チェッカーが変更され、タイマーが再起動して再び終了したときに再度実行されなくなります...しかし、すべての新しいメッセージのチェックを停止しました...ヒントはありますか??

var count:Timer = new Timer(1000, 1);
count.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
count.start();

var checker;
function onTimerComplete(event:TimerEvent):void{
    if (checker != "" + idstored + "done") {
    checker =  "" + idstored + "done";

    var variables_cc:URLVariables = new URLVariables();
    var varSend_cc:URLRequest = new URLRequest("chat.php");
    varSend_cc.method = URLRequestMethod.POST;
    varSend_cc.data = variables_cc;
    var varLoader_cc:URLLoader = new URLLoader;
    varLoader_cc.dataFormat = URLLoaderDataFormat.VARIABLES;
    varLoader_cc.addEventListener(Event.COMPLETE, completeHandler_cc);

    function completeHandler_cc(event:Event):void{
        if (event.target.data.statusline == "is_new") {
              stored_id_txt.text = "" + event.target.data.stored_id;
              status_txt.text = "" + event.target.data.statusline;
              returnline.text = "" + event.target.data.returnBody;
              checker.text = checker;
              splitByDelimiter(event.target.data.returnBody);
              idstored = event.target.data.stored_id;
              checker = "refresh";
        } 
    }}
    // ready the last_refresh_time variable for sending to PHP
    variables_cc.requester = "chat_check";
    variables_cc.stored_id = idstored;
    varLoader_cc.load(varSend_cc);
    count.reset();
    count.start();
}
4

1 に答える 1

0

前のダウンロードが完了していないときに新しいダウンロードを開始しようとすると、エラーが発生することがあります。リアルタイムで 1 秒ごとに遅延に依存することを行うのは賢明ではありません。何かを開始し、それが終了するのを待ってから、もう一度開始する必要があります。

タイマーの起動後に (onTimerComplete 関数内で) removeEventListener を削除し、タイマーを停止してリセットします。qddEventListener をタイマーに送信し、データがダウンロードされた後に開始します (completeHangler_cc 関数内)。

于 2013-04-17T12:28:52.693 に答える