Ciao.
Dato questo Array:
lettere = new Array("a","b","c","d","e","f","g","h","i");
Mi date una mano per randomizzare la sequenza?
Grazie.
Ciao.
Dato questo Array:
lettere = new Array("a","b","c","d","e","f","g","h","i");
Mi date una mano per randomizzare la sequenza?
Grazie.
FaX
Io ho provato così:
trace(lettere[random(i)]);
ma ho bisogno che le lettere non siano duplicate ma semplicemente mischiate.
FaX
Allora, ci sono riuscito:
lettere = new Array("a","b","c","d","e","f","g","h","i");
poi, all'interno di un ciclo:
lettere_uscite=new Array(i);
lettere_uscite.push(lettere.splice(random(lettere. length), 1));
trace=lettere_uscite[i];
Ora però mi sorge un problema: facendo così, il primo array è praticamente vuoto perché con splice ho eliminato uno alla volta i suoi elementi.
Non c'è un modo per avere questo stesso risultato senza però svuotare il primo array? Questo perché devo poter anche richiamare la sequenza originale.
FaX
codice:Array.prototype.shuffle = function(num) { var a = this.slice(), b = []; for (var i = 0; i < (num != undefined ? num : this.length); i++) { var n = random(a.length); b.push(a[n]);a.splice(n, 1); } return b; }; mioArray = ["a","b","c","d","e","f","g","h","i"]; trace(mioArray); trace(mioArray.shuffle());
Ciao negatyve!
Mi sembra sia perfetto: la sequenza originale dell'array, non viene modificata al di fuori della funzione, giusto?
FaX
No, viene restituita una copia..
Avrei bisogno di un altro aiutino...![]()
Il mio filmato è costituito da un quadratino, che contiene un campo dinamico, che duplico tante volte quante sono le lettere dell'array; sopra ogni quadratino ci deve stare la corrispettiva lettera.
Nel primo frame ho inizializzato tutte le variabili per creare il ciclo e che mi permettono di posizionare, tutti i cloni, disposti su più righe; nel secondo frame ho il ciclo con il duplicate il posizionamento e l'azione relativa al posizionamento di ogni lettera sopra il quadratino relativo.
Se richiamo l'array così: this.["quadrato"+i].campo_testo.text=MioArray[i];
è tutto ok e mi scrive la lettera corrispondente al quadratino ma vorrei anche sistemare ogni lettera della sequenza "shuffle" nello stessa maniera.
So che è parecchio difficile capirci qualcosa... vuoi che ti scrivo il codice?
Tipo questo:![]()
MioArray
[a] [b] [c] [d] [e] [f]
MioArray.shuffle();
[f] [c] [a] [e] [b] [d]
FaX
Non ho capito niente.. :)
Il risultato è una riga composta da 24 quadratini e sopra ognuno di essi c'è la lettera [i] corrispondente.
Fatto in questa maniera i quadrati non appaiono tutti insieme ma in sequenza.
nel primo frame ho questo:
codice:set("completo", false); set("i", 0); set("tot_colonne", 24); set("tot_righe", 1); set("tot_quadrati", tot_colonne*tot_righe); Array.prototype.shuffle = function(num){ var a = this.slice(), b = []; for (var i = 0; i < (num != undefined ? num : this.length); i++) { var n = random(a.length); b.push(a[n]);a.splice(n, 1); } return b; }; set("lettere", ["i","n","f","o","@","s","i","t","o","i","n","t","e","r","n","e","t"]); trace(lettere); trace(lettere.shuffle()); quadrato._visible=false;
nel secondo frame ho questo:
nel terzo frame ho questo:codice://numero corrente di riga set("num_riga", Math.floor(i/tot_colonne)); quadrato.duplicateMovieClip("quadrato"+i, i); //identifico il numero dell'oggetto nome_clip=this["quadrato"+i]._name; numero_clip=nome_clip.split("quadrato").join(""); //definisco le dimensioni dell'oggetto come variabili altezza_oggetto=this["quadrato"+i]._height; larghezza_oggetto=this["quadrato"+i]._width; this["quadrato"+i]._y=num_riga*altezza_oggetto; this["quadrato"+i]._x=(larghezza_oggetto*i)-(larghezza_oggetto*tot_colonne*num_riga); this["quadrato"+i].lettera_singola.text=lettere.shuffle();
codice:i++; if(i<tot_quadrati){ gotoAndPlay(2); }else{ stop(); }
FaX