2017-08-31 2 views
0

J'essaie de faire un jeu Simon et voici le code dans le codepen. Le problème est que l'opacité n'a pas changé pendant l'exécution du code. Il est assez étrange que le texte html ait été modifié mais pas l'opacité. Quelqu'un peut-il indiquer où j'ai mal fait? le code est en ligne31.css opacity n'a pas changé dans setTimeOut

$(document).ready(function(){ 
    $(".sw-slot").click(function(){ 
    $("#pwr-sw").toggleClass('sw-on'); 
    $('.count').toggleClass('led-off'); 
    if($("#pwr-sw").hasClass("sw-on")) 
    { 
     $("#start").click(function(){ 
     console.log("game started"); 
     var myGame= new Game(); 
     var gameCount = 3; 
    //computer move 

     for (var i = 1; i <= gameCount; i++) { 
      (function() { 
       var j = i; 

      var currentArray = myGame.computer.slice(0, gameCount); 
       var sectornumber = currentArray[j-1]; 

      setTimeout(function timer() { 
        console.log("now 0.5"); 
        $(".count").text(j);     
        $("#sector-"+sectornumber).css('opacity', 0.1); 
       },j*2000); //这一行将i*1000改为j*1000也行,并不影响 
       setTimeout(function timer1() { 
        console.log("now 1"); 
        $("#sector-"+sectornumber).css('opacity', 1); 
       },j*2000); //这一行将i*1000改为j*1000也行,并不影响 
      })(); 
     } 
     console.log("TIMEOUT FISNIHED") 
    //waiting for user input 
     }) 



    } 
    else 
    { 
     console.log("game ended"); 
    } 
}) 

function Game(){ 
    this.computer=[ ]; 
    this.userInput=[ ]; 
    for(var i =0;i<20;i++) 
    { 
     this.computer.push(Math.floor(Math.random() * 4)); 
    } 
}; 
}) 
+0

https://codepen.io/amberwjq/pen/prOVKw?editors = 1111 Voici le lien du projet dans le codepen – Summer0408

Répondre

0

Ce n'est pas que ça ne fonctionne pas, il est que vous définissez l'opacité à 1 en même temps que vous définissez à 0,1.

setTimeout(function timer() { 
    console.log("now 0.5"); 
    $(".count").text(j); 
    $("#sector-"+sectornumber).css('opacity', 0.1); 
},j*2000); //这一行将i*1000改为j*1000也行,并不影响 

setTimeout(function timer1() { 
    console.log("now 1"); 
    $("#sector-"+sectornumber).css('opacity', 1); 
},j*2000); //这一行将i*1000改为j*1000也行,并不影响 

Si vous voulez commencer la deuxième minuterie après la première, vous devez le mettre dans le premier rappel:

setTimeout(function timer() { 
    console.log("now 0.5"); 
    $(".count").text(j); 
    $("#sector-"+sectornumber).css('opacity', 0.1); 

    setTimeout(function timer1() { 
     console.log("now 1"); 
     $("#sector-"+sectornumber).css('opacity', 1); 
    },j*2000); //这一行将i*1000改为j*1000也行,并不影响 

},j*2000); //这一行将i*1000改为j*1000也行,并不影响 
+0

Salut Camille, Merci pour votre réponse. En utilisant votre code suggéré, la séquence n'est pas correcte comme vous pouvez le voir sur la console. « Maintenant 0,5 » « maintenant 0,5 » « maintenant 1 » « maintenant 0,5 » « maintenant 1 » « maintenant 1 » – Summer0408

+0

Oui, je remarquai que la mise en opacité à 1 presque arrivé en même temps que la mise à 0,1 .Mais pourquoi cela arrive-t-il? il y a un timeout j * 2000 pour avoir du retard. – Summer0408