Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [MX] univocare risultati di random()

    Ciao gente! :gren:

    ho uno SWF che mi carica immagini esterne visualizzandole in fading...
    per renderlo meno pesante ho fatto in modo che caricasse l'immagine nel momento in cui sta per fare il fade...
    mi funziona tutto benissimo...
    ora però sto cercando il modo di rendere casuali la visualizzazione di codeste immagini.

    In pratica l'SFW carica delle variabili esternamente da un file ASP che vengono poi immesse in un array, quindi al momento del loadMovie verrà richiamato l'array con l'indice che a questo punto è casuale.
    fin qui tutto semplice e funzionante.

    Come posso fare perché mi visualizzi tutte le immagini univocamente?
    Naturalmete una volta visualizzate tutte il tutto si ripete.

    Avevo pensato di inserire in un Array i valori che random() mi restituisce e con un if controllare che non sia già stato restituito, ma oltre al fatto che penso che impiegherebbe abbastanza il parser, non so come creare questa condizione.

    Qualcuno ha un'idea?
    ---WilloW-ZeroZero---

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Crei un array con gli stessi elementi dell'array ricevuto dalla pagina asp, ma disposti in maniera casuale. Quindi svolgi tutta la sequenza di caricamento sul nuovo array, eventualmente creandone ogni volta uno nuovo alla fine di ogni ciclo:

    codice:
    Array.prototype.shuffle = function()
    {
    	var a = this.slice(), b = [];
    	for (var i = 0; i < this.length; i++) {
    		var n = random(a.length);
    		b.push(a[n]);a.splice(n, 1);
    	}
    	return b;
    };
    
    mioArray = [1,2,3,4,5,6,7,8,9];
    trace(mioArray);
    trace(mioArray.shuffle());

  3. #3
    Originariamente inviato da negatyve
    Crei un array con gli stessi elementi dell'array ricevuto dalla pagina asp, ma disposti in maniera casuale. Quindi svolgi tutta la sequenza di caricamento sul nuovo array, eventualmente creandone ogni volta uno nuovo alla fine di ogni ciclo:
    ...
    Eh... fosse così facile...
    quello che mi sono dimenticato di dire ( scusaScusaScusa ) è che dalle variabili restituite mi creo due array in flash: uno per il nome del file "imgName" ed un altro per l'URL per l'area attiva "imgUrl".

    Il tuo prototype andrebbe bennissimo (e ti ringrazio ) se fosse per un array soltanto.

    Ma se lo utlizzo per due perdo la correlazione degli array...
    Scusa ancora per non avere definito questo particolare
    ---WilloW-ZeroZero---

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    codice:
    Array.prototype.resetCounter = function(n)
    {
    	this.splice(0);
    	for(var i = 0; i < n; i++)this.push(i);
    };
    Array.prototype.shuffle = function()
    {
    	var a = this.slice(), b = [];
    	for (var i = 0; i < this.length; i++) {
    		var n = random(a.length);
    		b.push(a[n]);a.splice(n, 1);
    	}
    	return b;
    };
    // supponiamo che a questo punto tu,
    // dopo il caricamento dalla pagina asp,
    // abbia i due array, di questo tipo:
    imgName = ["pippo.jpg", "pluto.jpg", "minnie.jpg"]; 
    imgURL  = ["pippo.htm", "pluto.htm", "minnie.htm"];
    
    // crei un array
    randomArray = [];
    // inserisci nell'array una serie di numeri,
    // tanti quanto il valore passato come parametro
    // in modo da avere un array "contatore"
    randomArray.resetCounter(imgName.length);
    // mescoli gli elementi
    randomArray = randomArray.shuffle();
    trace(randomArray)
    // adesso non hai un array di elementi,
    // ma un array DI INDICI con cui richiamare
    // gli elementi degli altri due array.
    // tanto per farti capire:
    
    // bisogna fare un ciclo per quanti sono
    // gli elementi dell'array
    for(var i = 0; i < randomArray.length; i++){
    	// prendiamo il primo elemento dell'array,
    	// cioè un numero che ci indica l'indice
    	// da utilizzare per estrarre i dati
    	// dagli altri array
    	var index = randomArray[i];
    	trace("il file " + imgName[index] + " carica l'url " + imgURL[index]);
    	// come vedi dal trace, le coppie sono rispettate, ma l'ordine è random
    }

  5. #5
    Prima di tutto un fantastrilione di grazie! :gren:
    ho risolto alla perfezione con il tuo codice! :mavieni:

    Per secondo... se non sei un "Patch Adams" dei flashers :metallica, non so proprio che aggettivo darti... "Flash Angel"? (suona un po' troppo gotico )

    Ciao e grazie ancora!!!
    ---WilloW-ZeroZero---

  6. #6

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.