2016-09-10 2 views
-3

Я пытаюсь остановить setTimeout кнопкой в ​​моей игре, но когда я нажимаю на кнопку, я возвращаюсь в меню, и таймер продолжается. Может кто-нибудь мне помочь?отменить timeOut в 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 my bad Я изменил его, когда пытался найти ошибку, но я просто изменил ее, и когда я нажимаю кнопку, я все равно получаю проигрывающий экран 30 секунд позже. –

+0

Следующее, что я хотел бы проверить, это то, что timerId являются одинаковыми, поэтому, когда вы сначала объявляете 'this.leTimeOut', я бы поставил' console.log (this.leTimeOut) 'прямо под ним, а также сделать то же самое, прежде чем вы вызовете 'clearTimeOut (this.leTimeOut)' и убедитесь, что они возвращают тот же идентификатор в консоли – finalfreq

+0

благодаря вашей идее я нашел проблему. Проще говоря, во время моего clearTimeOut мне нужно было поставить (this.parent.ltTimeOut), чтобы он работал. –

Смежные вопросы