Forum Flash, Actionscript, PHP e MySQL
clip con img caricate da xml + fade. i link non funzionano

 
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » ActionScript & Server Side
Precedente  Successivo 
Autore Messaggio
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto: clip con img caricate da xml + fade. i link non funzionano
Inviato: 27.02.10 | 18:03
Rispondi citando

Ciao a tutti.

Sono una novellina e sto impazzendo da un paio di giorni con una semplice animazione.

Ho uno stage con 9 movieclip (8 con immagini e una con un swf). Tutte le immagini (e l'swf) vengono caricate dall'esterno tramite un xml.
Nell'xml ho anche i link da assegnare a ciascun movieclip.
Le 8 immagini compiono un fade in/fade out, ognuno in tempi e con alpha differenti.
In ciascun movieclip ho geturl per inserire il link.

Inizialmente avevo gestito il fade tramite AS in un modo sicuramente sbagliato, ma che funzionava, ovvero in ogni frame impostavo il valore dell'alpha di ciascun movie e in questo caso i link non mi davano problemi.

Ho poi deciso di provare un'altra soluzione che mi sembrava (nella mia ignoranza) più furba, ovvero ho messo un movieclip per layer (invece che tutti tenerli tutti insieme in uno unico) e ho gestito il fade in/out con una classic tween nella timeline.
In questo caso non funzionano più i link dei movie.

Il problema è il classic tween sui movie?
Mi potreste dire se c'è un altro modo per inserire i link in modo che funzionino oppure se devo far fare il fade in/out in maniera diversa per farli funzionare?

Vi posto il codice AS del fla.


//inizio codice

 
Codice:
filexml = "file.xml";
filexml.ignoreWhite = true;

ApriXML();
function ApriXML() {
mioxml = new XML();
myarray = new Array();
myarray2 = new Array();
idocchiale = new Array();
fotoocchiale = new Array();
urlocchiale = new Array();
idbrand = new Array();
fotobrand = new Array();
urlbrand = new Array();
mioxml.load(filexml);
mioxml.onLoad = ElaboraXML;

function ElaboraXML(success) {
if (mioxml.loaded) {
myarray = mioxml.childNodes;

for (j=0; j<=myarray.length; j++) {
if (myarray[j].nodeName == "elenco") {
myarray2 = myarray[j].childNodes;

for (i=0; i<=myarray2.length; i++) {
if (myarray2[i].nodeName == "occhiale") {
//trace((myarray2[i].attributes.id));
_root.idocchiale.push(myarray2[i].attributes.id);
_root.fotoocchiale.push(myarray2[i].attributes.foto);
_root.urlocchiale.push(myarray2[i].attributes.url);
}
if (myarray2[i].nodeName == "brand") {
//trace((myarray2[i].attributes.id));
_root.idbrand.push(myarray2[i].attributes.id);
_root.fotobrand.push(myarray2[i].attributes.foto);
_root.urlbrand.push(myarray2[i].attributes.url);
}
}
}
}

delete myarray;
delete myarray2;
delete mioxml;


for (l=0; l<=idocchiale.length; l++) {
trace(idocchiale[l]);
trace(fotoocchiale[l]);
trace(urlocchiale[l]);
trace(l);
eval(idocchiale[l]+"_mc").loadMovie(fotoocchiale[l]);
}


for (h=0; h<=idbrand.length; h++) {
trace(idbrand[h]);
trace(fotobrand[h]);
trace(urlbrand[h]);
trace(h);
eval(idbrand+"_mc").loadMovie(fotobrand);
}

}

}


nei movieclip ho semplicemente questo:

 
Codice:
on (release) {
getURL(urlocchiale[1]);
}



vi metto anche uno screen con la situazione dei layer
[/img]
 
Codice:


Ultima modifica di avyje il 02.03.10 | 10:21, modificato 1 volta in totale
Torna in cima
Profilo Messaggio privato  
Sponsor
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 01.03.10 | 14:29
Rispondi citando

Ciao avyje, e Benvenuta nel Forum :)

Il codice che usi è un po' incasinato fagiano
Potresti gestire le tweens direttamente da AS.

Per il tuo problema, hai controllato che i movieclips abbiano il nome istanza in entrambi i frame chiave?
Magari il nome istanza c'è solamente nel primo e non nel secondo, quindi al momento dell'AS l'istanza non esiste.
Mi apre di vedere dal print che l'AS 'hai inserita nell'ultimo frame giusto?


P.S: per i prossimi posts, ricordati di racchiudere le porzioni di codice tra tag CODE, per renderlo più leggibile.

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto:
Inviato: 02.03.10 | 10:33
Rispondi citando

Ciao Coach!

Grazie del benvenuto e della risposta.


 
Coach ha scritto:
Potresti gestire le tweens direttamente da AS.

Intendi dire come avevo fatto all'inizio ovvero frame per frame controllo gli alpha dei singoli movieclip?
Mi dava l'idea di non essere un modo molto "bello" per gestire il fade.

Il nome istanza dei movieclip c'è in tutti i frame. La cosa strana è che se metto (ad esempio) il link solo nell'ultimo frame, quando l'animazione arriva a quel punto scompare l'immagine dentro il movie (e in ogni caso il link non c'è). Rolling Eyes
Torna in cima
Profilo Messaggio privato  
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 02.03.10 | 11:45
Rispondi citando

No no, io dico proprio da AS fagiano

Prova a scrivere in quel campo di testo che c'è in alto a destra: TWEEN Mr. Green
Dai una letta alla documentazione, in cui trovi anche degli esempi... se poi hai dubbi o necessiti di aiuto, siamo qua :)

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto:
Inviato: 02.03.10 | 12:38
Rispondi citando

Ok, provo a documentarmi e ad usare la tween da AS.

Per il momento GRAZIE!
Torna in cima
Profilo Messaggio privato  
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 02.03.10 | 12:40
Rispondi citando

de nada, alla prossima fagiano
____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto:
Inviato: 11.03.10 | 18:14
Rispondi citando

Ciao Coach, sono di nuovo qui.

Sono riuscita a risolvere tutto, o meglio quasi tutto. Mi rimane un piccolo problemino.
Ora il mio swf carica immagini e link da un file xml contenente un elenco di brand.
Ogni 5 secondi va a caricare una nuova serie di immagini e link (sempre dallo stesso swf.
Il problema è che dopo un po' incomincia a fare pasticci con le immagini che carica e va in crisi.

 
Codice:
import mx.transitions.Tween;
import mx.transitions.easing.*;

//assegnazione variabile al file xml
filexml = "../prova/file.xml";
filexml.ignoreWhite = true;
var marchio:Number;

ApriXML();
function ApriXML() {
    //crea nuovo documento xml
    mioxml = new XML();
    //crea nuova array
    myarray = new Array();
    myarray2 = new Array();
    idocchiale = new Array();
    idocchiale2 = new Array();
    fotoocchiale = new Array();
    urlocchiale = new Array();
    idbrand = new Array();
    fotobrand = new Array();
    urlbrand = new Array();
    //carica file xml dall'url indicato e sostituisce il suo contenuto con quello scaricato
    mioxml.load(filexml);
    mioxml.ignoreWhite = true;
    //richiama funzione che verica il corretto caricamento del file
    mioxml.onLoad = ElaboraXML;
    function ElaboraXML(success) {
        if (mioxml.loaded) {
            myarray = mioxml.childNodes;

            //controlla se trova un nodo "elenco" nell'array e restituisce i nodi figli nell'array2
            max_marchi = myarray.length-1;

        }

        //il file xml generato              
        delete mioxml;
        //per i valori "idocchiale" trovati, assegna a ciascun movieclip con il nome dell'occhiale (=id)
        //un immagine con url "fotoocchiale"
        caricaImmagini();//--------------

    }
}

function chiamaArray(j) {

    if (myarray[j].nodeName == "elenco") {
        myarray2 = myarray[j].childNodes;

        for (i=0; i<=myarray2.length; i++) {
            if (myarray2[i].nodeName == "occhiale") {

                _root.idocchiale.push(myarray2[i].attributes.id);
                idocchiale2[marchio][i] = 1;//(myarray2[i].attributes.id);
                _root.fotoocchiale.push(myarray2[i].attributes.foto);
                _root.urlocchiale.push(myarray2[i].attributes.url);
            }
            if (myarray2[i].nodeName == "brand") {

                _root.idbrand.push(myarray2[i].attributes.id);
                _root.fotobrand.push(myarray2[i].attributes.foto);
                _root.urlbrand.push(myarray2[i].attributes.url);
            }
        }
    }


}


var brandChiamato:Number = 0;

function caricaImmagini() {
    gotoAndPlay(2);

    chiamaArray(brandChiamato);

    if (brandChiamato == max_marchi) {
        brandChiamato = 0;
    } else {
        brandChiamato++;
    }

    for (l=0; l<=idocchiale.length; l++) {

        eval(idocchiale[l]+"_mc").loadMovie(fotoocchiale[l]);

        var tween_handler:Tween = new Tween(occhiale8_mc, "_alpha", Strong.easeIn, 0, 100, 26, false);
        tween_handler.onMotionFinished = function() {
            occhiale8_mc.onRelease = function() {
                this.getURL(urlocchiale[8]);
            };
        };
        var tween_handler:Tween = new Tween(occhiale7_mc, "_alpha", Strong.easeIn, 0, 100, 25, false);
        tween_handler.onMotionFinished = function() {
            occhiale7_mc.onRelease = function() {
                this.getURL(urlocchiale[7]);
            };
        };
        var tween_handler:Tween = new Tween(occhiale6_mc, "_alpha", Strong.easeIn, 0, 100, 24, false);
        tween_handler.onMotionFinished = function() {
            new Tween(occhiale6_mc, "_alpha", Strong.easeIn, 100, 90, 8, false);
            occhiale6_mc.onRelease = function() {
                this.getURL(urlocchiale[6]);
            };
        };
        var tween_handler:Tween = new Tween(occhiale5_mc, "_alpha", Strong.easeIn, 0, 100, 23, false);
        tween_handler.onMotionFinished = function() {
            new Tween(occhiale5_mc, "_alpha", Strong.easeIn, 100, 80, 9, false);
            occhiale5_mc.onRelease = function() {
                this.getURL(urlocchiale[5]);
            };
        };
        var tween_handler:Tween = new Tween(occhiale4_mc, "_alpha", Strong.easeIn, 0, 100, 22, false);
        tween_handler.onMotionFinished = function() {
            new Tween(occhiale4_mc, "_alpha", Strong.easeIn, 100, 70, 10, false);
            occhiale4_mc.onRelease = function() {
                this.getURL(urlocchiale[4]);
            };
        };
        var tween_handler:Tween = new Tween(occhiale3_mc, "_alpha", Strong.easeIn, 0, 100, 21, false);
        tween_handler.onMotionFinished = function() {
            new Tween(occhiale3_mc, "_alpha", Strong.easeIn, 100, 60, 11, false);
            occhiale3_mc.onRelease = function() {
                this.getURL(urlocchiale[3]);
            };
        };
        var tween_handler:Tween = new Tween(occhiale2_mc, "_alpha", Strong.easeIn, 0, 100, 20, false);
        tween_handler.onMotionFinished = function() {
            new Tween(occhiale2_mc, "_alpha", Strong.easeIn, 100, 0, 13, false);
        };
        var tween_handler:Tween = new Tween(occhiale1_mc, "_alpha", Strong.easeIn, 0, 100, 19, false);
        tween_handler.onMotionFinished = function() {
            new Tween(occhiale1_mc, "_alpha", Strong.easeIn, 100, 0, 10, false);
            
        };
        

    }

    for (h=0; h<=idbrand.length; h++) {
        eval(idbrand[h]+"_mc").loadMovie(fotobrand[h]);//-------------- h
    }


}

setInterval(caricaImmagini,5000);//--------------


Quando termina di caricare una serie di immagini dovrei eliminare l'elenco che ha fatto?

Ti ringrazio di nuovo in anticipo

ps: so che il codice della tween è bello scritto così, ma non ho ancora trovato il modo di sistemarlo.
Torna in cima
Profilo Messaggio privato  
mesk8
avanzato
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona

MessaggioOggetto:
Inviato: 14.03.10 | 20:14
Rispondi citando

un suggerimento per risolvere tutta quella serie di mc e tween, se può senvire
 
Codice:
var livellobase:MovieClip = this; // o nome del mc contenitore
var arrayocchiale:Array = new Array(occhiale1_mc, occhiale2_mc, occhiale3_mc, occhiale4_mc, occhiale5_mc, occhiale6_mc, occhiale7_mc, occhiale8_mc);

for (var mc:Number = 0; mc<8; mc++) {
    var tween_handler:Tween = new Tween(arrayocchiale[mc], "_alpha", Strong.easeIn, 0, 100, 22, false);
    tween_handler.onMotionFinished = function(){
        new Tween(arrayocchiale[mc], "_alpha", Strong.easeIn, 100, 0, 10, false);
    };
}
Torna in cima
Profilo Messaggio privato [ Nascosto ] MSN Messenger
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto:
Inviato: 15.03.10 | 11:56
Rispondi citando

Grazie del suggerimento mesk8, ma così facendo non ho il controllo sul fotogramma in cui imposto il valore max e min del fade e la percentuale di alpha finale del clip (valori differenti per ciascun movieclip).
Torna in cima
Profilo Messaggio privato  
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 15.03.10 | 12:03
Rispondi citando

Dove e cosa imposti su che frame? Whistle

Pensarla in una maniera più simile alla programmazione? Shoked
...usando array e cicli.


P.S: nel codice sono utili anche i commenti :)

____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto:
Inviato: 15.03.10 | 14:28
Rispondi citando

Nel codice, dove c'è quell'orribile elenco di tween, imposto per ciascun movieclip in quanti frame (numero che cambia per ognuno) effettuare il fade da 0 a 100, dopo di chè parte un altro fade da 100 a x (valore diverso per ciascun clip) in y frame (anche questo varia da uno all'altro).

Stavo pensando a come rendere migliore il codice in questo punto, ma al momento non ho avuto tempo di riguardarlo.
Torna in cima
Profilo Messaggio privato  
Coach
amministratore
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona

MessaggioOggetto:
Inviato: 15.03.10 | 15:30
Rispondi citando

Nello stesso modo in cui è gestito quel ciclo for, puoi utilizzare l'XML che già usi, aggiungendo delle proprietà :)
____________________________________________________________


Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE!
Torna in cima
Profilo Messaggio privato [ Nascosto ] HomePage Yahoo Messenger MSN Messenger Skype
mesk8
avanzato
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona

MessaggioOggetto:
Inviato: 15.03.10 | 16:26
Rispondi citando

se ci pensi un attimo la soluzione è abbastanza semplice, integra i valori dei frame in un altro array
io poi ti suggerisco di inserire quel valore all'interno di ogni movieclip, cosi da poterlo recuperare con facilità
 
Codice:
var livellobase:MovieClip = this; // o nome del mc contenitore
var arrayocchiale:Array = new Array(occhiale1_mc, occhiale2_mc, occhiale3_mc, occhiale4_mc, occhiale5_mc, occhiale6_mc, occhiale7_mc, occhiale8_mc);
var arrayframe:Array = new Array(19,20,21,22,23,24,25,26);

for (var mc:Number = 0; mc<arrayocchiale.length; mc++) {
    var occhialemc:MovieClip = livellobase.arrayocchiale[mc]
    occhialemc.frm = arrayframe[mc]; // crea la variabile dentro il movieclip con il valore del frame
    var tween_handler:Tween = new Tween(occhialemc, "_alpha", Strong.easeIn, 0, 100, 22, false);
    tween_handler.onMotionFinished = function(){
        new Tween(arrayocchiale[mc], "_alpha", Strong.easeIn, 100, 0, occhialemc.frm, false);
    };
}

pensato in maniera più simile alla programmazione Wink
Torna in cima
Profilo Messaggio privato [ Nascosto ] MSN Messenger
avyje
nuovo utente
nuovo utente



Registrato: 27/02/10 18:00
Messaggi: 7

MessaggioOggetto:
Inviato: 16.03.10 | 18:04
Rispondi citando

grazie mille, ci provo!
Torna in cima
Profilo Messaggio privato  
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Forum Flash, Actionscript, PHP e MySQL » ActionScript & Server Side Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

Discussioni Simili
Topic Autore Forum Risposte Ultimo Messaggio
Nessun nuovo messaggio effeto fade suns ActionScript & Server Side 5 14.05.09 | 13:13 Leggi gli ultimi messaggi
Coach
Nessun nuovo messaggio SetMask di immagini caricate da un Xml kerotan ActionScript & Server Side 3 09.05.07 | 14:57 Leggi gli ultimi messaggi
kerotan
Nessun nuovo messaggio [mx2004]maschere su foto caricate ARIELE ActionScript & Server Side 2 14.04.06 | 15:08 Leggi gli ultimi messaggi
ARIELE
Nessun nuovo messaggio immagini caricate da databse mysql ngiaquinto ActionScript & Server Side 13 28.06.07 | 10:10 Leggi gli ultimi messaggi
Coach
Nessun nuovo messaggio posizione delle foto caricate savio_c ActionScript & Server Side 7 25.10.06 | 15:08 Leggi gli ultimi messaggi
tarusky



 
Vai a:  
Non puoi inserire nuovi Topic in questo forum
Non puoi rispondere ai Topic in questo forum
Non puoi modificare i tuoi messaggi in questo forum
Non puoi cancellare i tuoi messaggi in questo forum
Non puoi votare nei sondaggi in questo forum
Non puoi allegare files in questo forum
Puoi downloadare gli allegati in questo forum



Powered by phpBB © 2001, 2002 phpBB Group - phpBB SEO Designed by coachdesign - © 2003-2005