2016-09-10 81 views
-3

我試圖用我的遊戲中的一個按鈕來停止setTimeout,但是當我點擊按鈕時,我會回到菜單和計時器繼續。有人能幫助我嗎?在JavaScript中用按鈕取消超時

P.s.我一板缺;大量的代碼在中間,使其更小

 this.stop(); 
    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    // gestion du temps 
    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    this.leTimeOut = window.setTimeout(punir.bind(this), 31000); 
    this.lInterval = window.setInterval(afficherTemps.bind(this), 1000); 
///////////////////////// 
Cutted section 
//////////////////////// 

     console.info("!!! "+nbMatchs+" !!!"); 
     this.txtItems.text = ""+(6-nbMatchs); 

     if(nbMatchs == 6){ 
      window.clearTimeout(this.leTimeOut); 
      this.gotoAndStop("FinNiveau1"); 
     } 

     return bonnePosition; 
    } 


    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    // Fonction pour lancer la punition 
    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    function punir(evt){ 
     console.log("temps écoulé"); 
     this.gotoAndStop("EchecNiveau1"); 
    } 


    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    // Fonction d'affichage du temps 
    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    this.txtTimer.text = "29"; 
    function afficherTemps(evt){ 
     this.txtTimer.text = parseInt(this.txtTimer.text)-1; 
    } 


    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    // Fonction et écouteur du bouton Annuler 
    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    this.btRetour.evenementClick = this.btRetour.on("click", onClicA); 
    function onClicA(evt) { 
     console.log("retour au menu"); 
     clearTimeOut(this.leTimeOut); 
     evt.remove(); //retrait de l'écouteur (la méthode facile!) 
     this.parent.gotoAndStop("Intro"); 

    } 
+1

你能將代碼作爲代碼塊置於問題中?從圖像中查看代碼是非常困難的。 – Matt

+0

您應該提供代碼。否則,你會在那裏收集downvotes – Mojtaba

+0

。現在應該更好 –

回答

0

如果你的代碼是完全複製了你的「clearTimeout」 是clearTimeOut並在超時鄰不應該大寫

+0

soory我的壞我改變了它,當我試圖找到錯誤,但我只是改變了它,當我點擊按鈕,我仍然在30秒後失去屏幕。 –

+0

我要檢查的下一件事是,如果timerId是相同的,所以當你第一次聲明'this.leTimeOut'時,我會在它下面放一個'console.log(this.leTimeOut)'並且在你調用之前也做同樣的事情 'clearTimeOut(this.leTimeOut)'並確保它們在控制檯 – finalfreq

+0

中返回相同的ID,這要感謝您的想法,我發現問題。簡單地說,在我的clearTimeOut期間,我需要把(this.parent.ltTimeOut)使它工作。 –