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

    Impostare una variabile con valori letti da file txt

    Ho un problema con flash e le actionscript 3.0.

    Sto creando un visualizzatore di foto che mi servirà per il mio sito. Facile, dato che potevo usare uno dei modelli già pronti in Flash CS5.
    Però quello vale per 4 foto, che devono avere nomi standard.
    Studiando il codice, vedo che i nomi delle foto vengono richiamate in questo modo:
    var hardcodedXML:String="<photos><image>image1.jpg</image><image>image2.jpg</image><image>image3.jpg</image><image>image4.jpg</image></photos>";

    A questo punto ho usato PHP per farmi dare una lista di tutte le foto che metto in una ben determinata cartella, e questo l'ho fatto, per cui ho un file di testo che contiene come stringa
    <photos><image>photo230.jpg</image><image>photo278.jpg</image><image>photo280.jpg</image></photos>
    (notare l'imprevedibilità dei nomi. Non so se l'assenza delle virgolette sia un problema o no, ma facendo una prova con gli script che ho provato non funziona lo stesso)

    A questo punto vorrei fare in modo che quel var hardcodeXML leggesse le informazioni delle foto da caricare direttamente dal file txt, ma questo non sono ancora riuscito a farlo, e googlando non ho trovato qualcosa che mi aiutasse..

    Quindi il problema è: importare una stringa di testo dal file txt ed inserirla nella variabile, così che vengano richiamate sempre le immagini realmente presenti nella cartella (e l'aggiornamento è automatico grazie a php).

    Deve quindi diventare così:
    var hardcodedXML:String=contenuto file txt; (con o senza virgolette?)

    Riuscireste ad aiutarmi per favore? Grazie mille! Io ci sto perdendo il sonno..

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Non ho capito a che ti serve il php comunque Flash dovrebbe ricevere una stringa pulita da tag html per cui sarebbe più semplice leggere e prelevare direttamente il contenuto di un nodo su un .xml.

    Potresti ottenere i nomi delle immagini (percorso) anche da un file di testo ma poi per gestirli come stringhe URLRequest da caricare mi sembra una complicazione inutile.

    Comunque per quel che ne so il file di testo dovrebbe essere formattato così:

    Codice PHP:
    immagine0=Foto0.jpg&immagine1=Foto1.jpg&immagine2=Foto2.jpg 
    Il codice AS3 per caricare i dati da file.txt e ottenere i nomi delle immagini:

    Codice PHP:
    var richiesta:URLRequest = new URLRequest("immagini/filetxt.txt");

    var 
    caricaTesto:URLLoader = new URLLoader();
    caricaTesto.dataFormat URLLoaderDataFormat.VARIABLES;

    caricaTesto.load(richiesta);
    caricaTesto.addEventListener(Event.COMPLETEcaricamentoCompletato);

    function 
    caricamentoCompletato(evento:Event):void
    {
        
    trace("OK")
        
    trace(caricaTesto.data.immagine0 "\n");
        
    trace(caricaTesto.data.immagine1 "\n");
        
    trace(caricaTesto.data.immagine2 "\n");

    Vedi tu se ti può essere utile in ogni caso secondo me è tutto più semplice se usi un .xml.
    Con i nomi immagine ottenuti vai a riempire un Array che ti servirà per caricare le immagini.
    Basterebbe poi aggiungere immagine nella cartella e nodo nell'.xml senza più mettere mani al codice AS3 e senza bisogno di php.

    ciao

  3. #3
    Innanzitutto grazie mille per la cortese risposta

    PHP mi serve per crearmi la lista delle foto che saranno presenti in una cartella specifica così che possa aggiornarsi in automatico al variare del contenuto della cartella stessa. Immagino che AS potesse fare altrettanto, ma di AS ne so davvero poco, per cui ho preferito cercare di semplificare le cose secondo le mie conoscenze.

    Per questo ho creato il visualizzatore di foto partendo dal template di flash cs5. Mi sembrava carino, completo, semplice, adatto al mio scopo.. L'unico problema era fare in modo che quel visualizzatore leggesse la lista di file della cartella e non una lista statica (per quantità e nomi) di immagini, così che il visualizzatore possa servire per varie cartelle senza bisogno di rigenerarlo di continuo al cambiamento dei contenuti delle cartelle di foto.

    Avendo trovato la parte di codice che richiamava la lista delle foto (quella scritta nel post iniziale, alias
    var hardcodeXML:String="<photos><image>foto1.jpg</image><image>foto2.jpg</image></photos>";
    ho fatto in modo da ottenere un file di testo che già ricreasse la lista completa delle foto, usando gli stessi tag che erano richiesti dalla variabile. Nella mia mente, quindi, a quel punto sarebbe bastato porre
    var hardcodeXML:String uguale al contenuto del file di testo stesso,
    così da non dover mettere ulteriormente mano alla programmazione AS3 che comunque, purtroppo, ancora non so..

    E siccome sono un principiante assoluto di AS3 non sapevo nemmeno come mettere i tag iniziali/finali <photos> e </photos> dentro alla stringa della variabile prima e dopo lista dei file da caricare, per cui ho risolto con php per farmi restituire una stringa di testo completa
    <photos><image>photo230.jpg</image><image>photo278.jpg</image></photos>

    Ecco perchè, purtroppo, il codice php da te suggerito purtroppo non mi andrebbe bene.. non saprei ricreare tutta la stringa dopo per passare la lista dei file alla variabile. Ammetto, comunque, che la tua soluzione (cioè di mettere tutto in un array) sarebbe la migliore. Solo non saprei gestirla dopo

    Detto questo: come mi suggeriresti di creare il file xml? E come dovrei cambiare poi l'assegnazione del valore alla famosa variabile per non dover rifare tutto il player? XD Grazie di cuore!!

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Ho dato un'occhiata alla galleria di immagini inclusa come modello in Flash e in effetti la variabile stringa: "hardcodeXML" viene ripulita dai tag html con un metodo che non conoscevo.

    Non ho ancora capito bene cosa fa questo tuo codice PHP e comunque ottieni in Flash una stringa da un file di testo con la stessa formattazione usata nella variabile "hardcodeXML" della galleria in questione.

    Se è così, dovresti caricare in Flash i dati contenuti nel file di testo e invece di valorizzare subito la variabile "hardcodeXML" come nel codice originale, la valorizzi con il contenuto importato dal file di testo.
    Puoi formattare il file di testo in questo modo:

    Codice PHP:
    varTesto=<photos><image title='Test 1'>immagini/1.jpg</image><image title='Test 2'>immagini/2.jpg</image><image title='Test 3'>immagini/3.jpg</image><image title='Test 4'>immagini/4.jpg</image></photos
    Come vedi ha creato una variabile di nome varTesto che contiene la stringa che serve e che verrà poi "ripulita" in Flash.

    Il codice originale della galleria và modificato così:

    Codice PHP:
    import fl.data.DataProvider;
    import fl.events.ListEvent;
    import fl.transitions.*;
    import fl.controls.*;

    // USER CONFIG SETTINGS =====
    var secondsDelay:Number 2;
    var 
    autoStart:Boolean true;
    var 
    transitionOn:Boolean true// true, false
    var transitionType:String "Fade"// Blinds, Fade, Fly, Iris, Photo, PixelDissolve, Rotate, Squeeze, Wipe, Zoom, Random
    //var hardcodedXML:String="<photos><image title='Test 1'>immagini/1.jpg</image><image title='Test 2'>immagini/2.jpg</image><image title='Test 3'>immagini/3.jpg</image><image title='Test 4'>immagini/4.jpg</image></photos>";
    // END USER CONFIG SETTINGS

    var hardcodedXML:String

    var richiesta:URLRequest = new URLRequest("immagini/filetesto.txt"); 
    var 
    caricaTesto:URLLoader = new URLLoader(); 
    caricaTesto.dataFormat URLLoaderDataFormat.VARIABLES

    caricaTesto.load(richiesta); 
    caricaTesto.addEventListener(Event.COMPLETEcaricamentoCompletato); 

    function 
    caricamentoCompletato(evento:Event):void 

        
    hardcodedXML=caricaTesto.data.varTesto
        imageList 
    XML(hardcodedXML);
        
    fl_parseImageXML(imageList);
    }
    // DECLARE VARIABLES AND OBJECTS =====
    var imageList:XML = new XML();
    var 
    currentImageID:Number 0;
    var 
    imageDPDataProvider = new DataProvider();
    var 
    slideshowTimer:Timer = new Timer((secondsDelay*1000), 0);
    // END DECLARATIONS

    // CODE FOR HARDCODED XML =====
    //imageList = XML(hardcodedXML);
    //fl_parseImageXML(imageList);
    // END CODE FOR HARDCODED XML

    // EVENTS ===== 
    Come vedi c'è la dichiarazione di variabile "hardcodedXML" all'inizio ma è vuota e viene valorizzata nella funzione "caricamentoCompletato" con i dati contenuti nella variabile sul file di testo.
    Poi ho dovuto spostare nella funzione quel "imageList" perchè nella posizione originale si generava un errore con il timer comunque così funziona e non servono altre modifiche al codice AS3.

    ciao

  5. #5
    Originariamente inviato da Sleter

    Come vedi c'è la dichiarazione di variabile "hardcodedXML" all'inizio ma è vuota e viene valorizzata nella funzione "caricamentoCompletato" con i dati contenuti nella variabile sul file di testo.
    Poi ho dovuto spostare nella funzione quel "imageList" perchè nella posizione originale si generava un errore con il timer comunque così funziona e non servono altre modifiche al codice AS3.

    ciao
    Sei un mito!!!!! Grazie di cuore!!!!!!!!! Funziona alla grande! Erano giorni e giorni che ci sbattevo la testa cercando di importare i dati nel file flash e non ci riuscivo!!

    Grazie infinite, avanzi una birra

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.