Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108

    estrazione random da un file di testo esterno

    Salve.
    Supponiamo che io abbia un txt esterno con un centinaio di frasi tutte una sotto l'altra tipo:

    file txt

    frase 1
    frase 2
    ....

    frase 100

    vorrei caricare all'interno di un campo di testo dinamico (flash Mx) 3 frasi scelte casualmente dalle 100. come si fa?

    grazie

  2. #2
    1) le carichi in un'Array
    2) estrai 3 numeri casuali con la funzione Math.random()
    3) i numeri estratti saranno gli indici delle frasi nell'Array

  3. #3
    esempio con 4 frasi e compare una alla volta casualmente:

    fai il tuo campo di testo dinamiko, dagli nome istanza "testo"

    trasformalo in mc e assegna questa azione:


    onClipEvent(load){
    pippo = new Array("prova1","prova2","prova3","prova4");
    pippetta=random(4); //4 è il numero delle frasi che hai
    testo.text=pippo[pippetta]
    }

    ti basta cambiare prova1,prova2,ecc con le 4 frasi ke vuoi e avrai una frase random tra le 4.
    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108
    siete tutti e due molto gentili, ma avrei bisogno di qualche indicazione in più. Considerando anche che mi piacerebbe estrarre le tre frasi da un txt esterno che posso modificare all'occorrenza.
    Insomma un'altra piccola imbeccata perchè non pratico l'action script da molto tempo.
    grazie a voi

  5. #5
    codice da forum ----- rempox

    non è propio qllo che cerchi tu questo.
    questo fa cambiare la frase in modo random ogni tot secondi da file esterno, è testato e funziona

    carica_frasi.txt deve essere strutturato

    &frase1=Oggi è una bella giornata&
    &frase2=Domani vado al mare&
    &frase3=Finalmente un po di sole&
    &rec=3&

    PS. la prima frase ti appare dopo 5 secondi

    codice:
    // creo un array dove caricherò le frasi esterne 
    frasi=new Array();
    
    N_records= new LoadVars();
    N_records.load("cambio_frasi.txt"); // variabili da ASP
    
    N_records.onLoad = function(success) {
    		_level0.NumFrasi=this.rec
    		for (i=1; i<=Number(this.rec); i++) {
    		     my_text="frase"+i
    		    _level0.frasi[i]=this[my_text]
    		     trace(_level0.frasi[i])
    		}
    		ID_conta=setInterval(_level0.conta,5000);
    						
    }
    
    
    n=0
    function conta() {
    	trace(n)
    	n++;
    	trace("sono passati:"+(5*n)+" secondi");
    	testo=frasi[n]
    	if (n>=NumFrasi) {
    		n=1
    		//clearInterval(ID_conta);
    	}
    }
    ma studiandolo provi a modificarlo poi basta chiedere ancora se hai difficoltà
    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108
    Diciamo che sono sulla buona strada.
    L'ultimo esempio di Enigma79 era un po'complesso per me.
    Ho deciso di usare il primo esempio avendo cura di triplicare il campo di testo dinamico.
    cioè
    testo1
    testo2
    testo3
    quindi il codice sul Mc mi è diventato:
    ---------------------------------------------------------
    onClipEvent(load){
    pippo1 = new Array("prova1","prova2","prova3","prova4");
    pippo2 = new Array("prova5","prova6","prova7","prova8");
    pippo3 = new Array("prova9","prova10","prova11","prova12");
    pippetta1=random(4);
    pippetta2=random(4);
    pippetta3=random(4);
    _root.pagina.testo1.text=pippo1[pippetta1]
    _root.pagina.testo2.text=pippo2[pippetta2]
    _root.pagina.testo3.text=pippo3[pippetta3]
    }
    --------------------------------------------------------

    ovviamente distribuirò le cento frasi in tre gruppi e popolerò tre array. Il problema che vorrei risolvere è che non mi va di mettere le cento frasi in quel codice e come dicevo prima, mi piacerebbe che queste frasi si caricassero da un txt esterno (o da tre txt, è lo stesso).
    Però non so come si fa.
    Un aiutino?

    A proposito, volevo dire che la cosa non va in rete, ma andrà su un proiettore (exe) in locale quindi non ho neanche problemi di verificare il caricamento dei dati.

  7. #7
    per il caricamento di dati esterni, questa è la guida che fa per te (in particolare leggi bene l'introduzione ed i primi 3 articoli):
    http://flash-mx.html.it/guide/lista_....asp?idguida=9

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108
    Caro Pasavign,
    ho letto il tutorial che mi hai consigliato, in realtà mi era già capitato di darci un'occhiata, e mi è abbastanza chiaro.
    Non ho ben capito però cosa effettivamente devo fare per adattarlo alle mie esigenze.
    Cioè io non ho ben capito come devo strutturare il file di testo per arrivare al risultato che ti dicevo.
    in pratica come faccio ad arrivare al risultato:
    pippo1 = new Array("prova1","prova2","prova3","prova4");
    dove prova1, prova2, ecc... sono delle frasi alcune volte anche piuttosto lunghe.
    Ecco perchè non volevo caricarle internamente come nell'esempio che avevo fatto in precedenza (che comunque funziona egregiamente).
    Sostanzialmente non so come strutturare il file di testo che raccoglie le frasi e caricarle negli array pippo1/pippo2/pippo3.
    Se la cosa è possibile con facilità bene, altrimenti rimango con il mio esempio avendo l'accortezza di popolare gli array manualmente.
    Ripeto, il file girerà in locale, quindi non ho problemi per la verifica del caricamento delle variabili.
    Non è che non mi voglio applicare, è proprio che non sono capace

    a vostro buon cuore...
    saluti

  9. #9
    crea un file di testo tipo:
    codice:
    &item00=***inizio***
    &item01=tanto va la gatta al lardo che ci lascia lo zampino...
    &item02=cantami o Diva del Pelide Achille l'ira funesta...
    &item03=Ei fu, siccome immobile, dato il mortal sospiro...
    &item04=Nel mezzo del cammin di nostra vita, mi ritrovai...
    &item05=.....
    &item06=.....
    &item07=.....
    &item08=.....
    &item99=***finale***
    L'importante è che i nomi delle variabili (itemxx)
    siano uno diverso dall'altro

    ------------------------------------------------------
    Nel 1° frame del filmato definisci l'Array ricevente...


    codice:
    frase = new Array ();
    Ad un movieclip vuoto associ...

    codice:
    onClipEvent(load){
    	i=0;
        this.loadVariables("frasi.txt");
    }
    onClipEvent(data){
        for(var prop in this){
    		str = this[prop];
            stri = str.split("\r").join("");    // per eliminare new-line
            strin = stri.split("\n").join("");  // e carriage return
    		if (strin.length>0) {
    			str = strin.substr(0, 12);
    			if (dacaricare) {
    				if (str == "***inizio***") {
    					dacaricare = false;
    				} else {
    					_root.frase[i] = strin;
    					i++;
    				}
    			} else {
    				if (str == "***finale***") {
    					dacaricare = true;
    				} 
    			}
    		}
        }
    	_root.frase.reverse();
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108
    Ok!
    Sei una gran persona, pasa.

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.