2017-10-14 11 views
-2

Super noob question ici. J'ai le code ci-dessous d'un projet as3 ci-dessous où les numéros d'image sont randomisés, puis en cliquant sur un sprite (suivant) se déplace vers la trame aléatoire suivante. Je n'arrive pas à trouver ce que je dois faire pour le convertir en javascript. Quelqu'un peut-il m'aider ou me diriger dans la bonne direction? TIA!Randomiser les images sans répétition avec html5 javascript

var sortedNumbers:Array = []; 
for(var i:int = 1; i < 21; i++) 
{ 
    sortedNumbers.push(i); 
} 
var unsortedNumbers:Array = sortedNumbers.slice(); 

while(sortedNumbers.join() == unsortedNumbers.join()) 
{ 
    unsortedNumbers.sort(function (a:int, b:int):int { return Math.random() > .5 ? -1 : 1; }); 
} 

this.start.addEventListener("click", f_nextRE.bind(this)); 

function f_nextRE() { 
     if(index == 20) { 
    gotoAndStop (22); 
    } 
    else { 
    gotoAndStop (unsortedNumbers [index] + 1); 
    index +=1; 
    } 
} 
+0

Cela ne ne semble pas être un code 'javascript' valide –

+0

Oui ... C'est ActionScript 3. Je suis très nouveau à javascript et cherchait de l'aide. convertir cela. ou se diriger dans la bonne direction vers où je peux apprendre comment randomiser une chaîne de nombres puis tirer d'eux pour jouer des cadres d'une toile HTML5 dans un ordre aléatoire. – ReviewEcon

Répondre

0

donc il m'a fallu quelques jours mais je trouve ma réponse (une combinaison de plusieurs sources nombreuses sur ce site) ... Posting ici pour aider les autres ...

//create array 
var shuffledFrames = []; 
//fill array 
for (var i = 1; i <= 35; i++) { 
    shuffledFrames.push(i); 
} 
//shuffle array 
function shuffle(a) { 
    var j, x, i; 
    for (i = a.length - 1; i > 0; i--) { 
     j = Math.floor(Math.random() * (i + 1)); 
     x = a[i]; 
     a[i] = a[j]; 
     a[j] = x; 
    } 
} 
//run shuffle function 
shuffle(shuffledFrames); 
//function to call next random frame then repeat when reaching the end. 
function f_next() 
{ 
    if (shown == 1){ 
     if (nextF == 35) { 
      nextF = 0; 
      } 
     else { 
     nextF += 1; 
     } 
    this.gotoAndStop (shuffledFrames [nextF]); 
    } 
}