Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16

    Flash AS 3.0 caricare immagini da cartella

    Salve a tutti,
    c'è un modo in AS 3.0, per caricare delle immagini da una cartella locale?
    Tenete conto che in questa cartella possono essere aggiunte o tolte delle foto.
    Deve andare tutto il locale.
    Vorrei evitare un file XML in quanto l'utente finale non riesce a modificare tale file...
    Quindi di conseguenza ci dovrebbe essere un comando che controlla il numero di file presenti nella cartella.
    Dopo, a seconda del numero di foto vengono creatati dei thumbnail delle immagini nell'MC, con sotto il nome del file.
    Grazie in anticipo...

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

    E' necessario che la posizione e i nomi dei file siano scritti su un .xml o direttamente nel codice ActionScript.

    Se ricordo bene c'è la possibilità di usare php per prelevare e inviare a Flash i nomi dei file presenti in una cartella sul server ma ovviamente (php = linguaggio lato server) non funzionerebbe in locale.


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16
    Originariamente inviato da Sleter
    Ciao

    E' necessario che la posizione e i nomi dei file siano scritti su un .xml o direttamente nel codice ActionScript.

    Se ricordo bene c'è la possibilità di usare php per prelevare e inviare a Flash i nomi dei file presenti in una cartella sul server ma ovviamente (php = linguaggio lato server) non funzionerebbe in locale.


    Quindi non ci sono altri modi?
    Io usavo una volta director, ed era una cosa abbastanza semplice da fare

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16
    Io ho trovato questo codice in AS 2 qualcuno riesce a convertirlo in AS 3?
    Non controlla il numero di foto che sono nella cartella ma fa uno slide a seconda del numero massimo di foto che si vedono...

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16
    Io ho trovato questo codice in AS 2 qualcuno riesce a convertirlo in AS 3?
    Non controlla il numero di foto che sono nella cartella ma fa uno slide a seconda del numero massimo di foto che si vedono, e se non ce ne sono più ricomincia da capo...

    codice:
    intervalm = 7000;//Time interval in milliseconds
    mainstotry = 10;//Maximum images to be shown at once by the slideshow.
    //This is also the ammount of images that flash will try to look for, in the folder.
    //
    //INIT VARIABLES, NOT TO BE CHANGED.
    imgnumber = 2;//First image to be created by duplicating "photo1"
    faddingnow = 0;//Image to be faded out
    fadeback = 1;//Background of fadding pair
    fadedbefore = mainstotal;//Init of previous faded image, to be hid and 100alphaed
    mainstotal = mainstotal;//Init of total of valid loaded images
    //
    aqui = this; //Tells the functions where this slideshow is located
    //this is the main fader
    fader = function(who, shade, frames) {
    	alphastart = who._alpha;
    	shadedif = shade - who._alpha;
    	who.onEnterFrame = function() {
    		//who._alpha -= 10;
    		who._alpha = who._alpha + shadedif / frames;
    		if (Math.abs(who._alpha - shade) < Math.abs(shadedif / frames)) {
    			who._alpha = shade;
    			delete who.onEnterFrame;
    		}
    	};
    };
    //This actions calls the fader()
    function justFades(aqui) {
    	mainpInterval_inited =true;
    	whatToFade(aqui);
    	this = aqui;
    	this["photo"+fadedbefore]._visible = false;
    	trace("hidden: "+this["photo"+fadedbefore]);
    	this["photo"+fadedbefore]._alpha = 100;
    	this["photo"+fadeback]._visible = true;
    	fader(this["photo"+faddingnow], 0, 20);
    	fadedbefore = faddingnow;
    }
    //
    function whatToFade() {
    	this = aqui;
    	fadeback++;
    	faddingnow++;
    	//if the last image has already been faded out…
    	if (fadedbefore == mainstotal) {
    		this.photo1._visible = true;
    		this.photo2._visible = true;
    		this["photo"+(mainstotal+1)]._visible = false;
    		fadeback = 2;
    		faddingnow = 1;
    		//if next pair's background image is smaller than 1px, sets total loaded…
    	} else if (this["photo"+fadeback]._width<1) {
    		mainstotal = faddingnow;
    		//…duplicates first foto below the last loaded image.
    		loadMovie("mainpictures/Photo1.jpg", this["photo"+fadeback]);
    		//…and batch deletes the rest of empty movieclips.
    		do {
    			fadeback++;
    			removeMovieClip(this["photo"+fadeback]);
    		} while (fadeback<mainstotry);
    	}
    }
    //This tries to load the maximum ammount of images to be shown at once in the slideshow
    for (i=1; i<=mainstotry; i++) {
    	this.createEmptyMovieClip("photo"+i, 1000-i);
    	this["photo"+i]._visible = false;
    	loadMovie("mainpictures/Photo"+i+".jpg", this["photo"+i]);
    }
    //This makes sure the interval is loaded just once or cleared before another one is called.
    if (mainpInterval_inited !=true) {
    var mainpInterval:Number = new setInterval(justFades, intervalm, aqui);
    	this.onUnload = function() {
    		clearInterval(mainpInterval);
    	};
    }

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

    In effetti con questo codice mi sono ricordato di una galleria di immagini che crea in dinamico la variabile stringa (indirizzo) necessaria per caricare le foto, aggiungendo un numero per identificarle.

    Appena ho un pò di tempo vedo se riesco a combinare qualcosa in AS3.

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

    Ho scritto questo codice per una slide show temporizzata che crea in dinamico il percorso delle immagini da caricare da una cartella.

    Per evitare errori è necessario fornire a Flash una variabile numerica memorizzata su un file di testo (.txt) localizzato nella stessa cartella che contiene le immagini.

    Le immagini devono essere inserite in una cartella di nome "immagini" localizzata nella stessa directory che contiene il file .swf e nominate con un numero partendo da 0 (0.jpg, 1.jpg, 2.jpg ecc...).

    Codice PHP:
    var percorsi:Array = new Array();
    var 
    maxNumber:uint;
    var 
    timer:Timer;
    var 
    id:uint 0;
    var 
    caricatore:Loader;
    var 
    richiesta:URLRequest;

    var 
    caricoVariabile:URLLoader = new URLLoader
    var indirizzo:String "immagini/numeroImmagini.txt"
    caricoVariabile.load(new URLRequest(indirizzo));
    caricoVariabile.addEventListener(Event.COMPLETEcaricamentoVarCompletato);

    function 
    caricamentoVarCompletato(evento:Event):void
    {
        var 
    variables:URLVariables = new URLVariables(caricoVariabile.data);
        
    maxNumber variables.numero;
        
    creaPercorsi(maxNumber);
    }
    function 
    creaPercorsi(maxNumber:uint):void
    {
        for (var 
    i:uint 0maxNumber++)
        {
            
    percorsi.push("immagini/" ".jpg");
        }
    }
    creaTimer();
    function 
    creaTimer():void
    {
        
    timer = new Timer(2000,1);
        
    timer.addEventListener(TimerEvent.TIMERchiamaCaricaImmagine);
        
    timer.start();
    }
    function 
    chiamaCaricaImmagine(evento:TimerEvent):void
    {
        
    caricaImmagine(percorsi[id]);
    }
    function 
    caricaImmagine(percorso:String):void
    {
        
    richiesta = new URLRequest(percorso);
        
    caricatore = new Loader();
        
    caricatore.load(richiesta);
        
    caricatore.contentLoaderInfo.addEventListener(Event.COMPLETEimmagineCaricata);
    }
    function 
    immagineCaricata(evento:Event):void
    {
        
    evento.target.removeEventListener(Event.COMPLETEimmagineCaricata);
        if (
    id percorsi.length)
        {
            
    addChild(caricatore);
            
    id++;
        }
        if (
    id percorsi.length 1)
        {
            
    id 0;
        }
        
    creaTimer();

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16
    Ciao, intanto ti ringrazio molto.
    Però non mi funziona.
    Mi da questo errore:
    codice:
    Error: Error #2101: La stringa passata a URLVariables.decode() deve essere una stringa di query con codifica URL contenente coppie nome/valore.
    	at Error$/throwError()
    	at flash.net::URLVariables/decode()
    	at flash.net::URLVariables()
    	at loadimage_fla::MainTimeline/caricamentoVarCompletato()
    	at flash.events::EventDispatcher/dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at flash.net::URLLoader/onComplete()
    Poi visto che ci sono, ti chiedo come andrebbe modificato il codice per far si che le immagini possano essere numerate a due cifre e partano da 01.
    Grazie ancora per l'aiuto, purtroppo e così tanto che non mastico AS che mi son dimenticato tutto

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

    Il file .txt nella cartella "immagini" deve essere formattato così:

    Codice PHP:
    numero=18 
    Il ciclo for che crea i percorsi, lavora in base al valore della variabile numero passata dal file di testo che in quella funzione ha il valore di "maxNumber" e riempie un Array di collegamenti (percorsi:Array).

    Codice PHP:
    for (var i:uint 0maxNumber++) 
        { 
            
    percorsi.push("immagini/" ".jpg"); 
        } 
    La variabile "i", corrisponde all'indice numerico dell'Array e a ogni interazione del ciclo si crea una stringa con valore: "immagini/0.jpg", "immagini/1.jpg", "immagini/2.jpg", ecc...

    Se aggiungi uno zero al nome dell'immagine serve una nuova variabile e inserire il ciclo in una condizione if che viene eseguita solo se la variabile memorizzata sul file .txt è minore di 10.

    Una seconda condizione if invece verrà eseguita se la variabile maxNumber ha un valore più alto di 10.
    La funzione creaPercorsi dovrà essere modificata in questo modo:

    Codice PHP:
    function creaPercorsi(maxNumber:uint):void
    {
        var 
    minore10:uint 10;
        if (
    maxNumber minore10)
        {
            for (var 
    i:uint 1maxNumber 1++)
            {
                
    percorsi.push("immagini/0" ".jpg");
            }
            
    trace(percorsi);
        }
        if (
    maxNumber minore10)
        {
            for (var 
    a:uint 110++)
            {
                
    percorsi.push("immagini/0" ".jpg");
            }
            for (var 
    b:uint 10maxNumber 1++)
            {
                
    percorsi.push("immagini/" ".jpg");
            }
        }

    Riassumendo, con questa variante i nomi delle immagini devono partire da 01.jpg, 02.jpg, 03.jpg ecc...
    Il valore dichiarato sul file .txt determina il numero di immagini che saranno visualizzate e non dovresti riscontrare errori se nella cartella hai 5 immagini o 200.

    ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16
    Grazie mille.
    Forse sono anche riuscito a snellirlo un pochino, e nel file di testo basta mettere solo il numero totale delle immagini.
    Si sai dire se potrebbe crearmi dei problemi così o funziona allo stesso modo del tuo cod.

    Codice PHP:
    var percorsi:Array = new Array();
    var 
    maxNumber:uint;
    var 
    timer:Timer;
    var 
    id:uint 0;
    var 
    caricatore:Loader;
    var 
    richiesta:URLRequest;

    var 
    caricoVariabile:URLLoader = new URLLoader  ;
    var 
    indirizzo:String "immagini/numeroImmagini.txt";
    caricoVariabile.load(new URLRequest(indirizzo));
    caricoVariabile.addEventListener(Event.COMPLETEcaricamentoVarCompletato);

    function 
    caricamentoVarCompletato(evento:Event):void
    {

        
    maxNumber = (caricoVariabile.data);
        
    creaPercorsi(maxNumber);
    }
    function 
    creaPercorsi(maxNumber:uint):void
    {

        if (
    maxNumber  >=  10)
        {
            for (var 
    a:uint 110++)
            {
                
    percorsi.push("immagini/0" ".jpg");
            }
            for (var 
    b:uint 10maxNumber 1++)
            {
                
    percorsi.push("immagini/" ".jpg");
            }
        }
        else
        {
            for (var 
    i:uint 1maxNumber 1++)
            {
                
    percorsi.push("immagini/0" ".jpg");
            }
        }
    }

    creaTimer();
    function 
    creaTimer():void
    {
        
    timer = new Timer(2000,1);
        
    timer.addEventListener(TimerEvent.TIMERchiamaCaricaImmagine);
        
    timer.start();
    }
    function 
    chiamaCaricaImmagine(evento:TimerEvent):void
    {
        
    caricaImmagine(percorsi[id]);
    }
    function 
    caricaImmagine(percorso:String):void
    {
        
    richiesta = new URLRequest(percorso);
        
    caricatore = new Loader();
        
    caricatore.load(richiesta);
        
    caricatore.contentLoaderInfo.addEventListener(Event.COMPLETEimmagineCaricata);
    }
    function 
    immagineCaricata(evento:Event):void
    {
        
    evento.target.removeEventListener(Event.COMPLETEimmagineCaricata);
        if (
    id percorsi.length)
        {
            
    addChild(caricatore);
            
    id++;
        }
        if (
    id percorsi.length 1)
        {
            
    id 0;
        }
        
    creaTimer();

    Grazie ancora

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 © 2024 vBulletin Solutions, Inc. All rights reserved.