|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
Oggetto: clip con img caricate da xml + fade. i link non funzionano
Inviato: 27.02.10 | 18:03 |
|
|
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]
Ultima modifica di avyje il 02.03.10 | 10:21, modificato 1 volta in totale |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 01.03.10 | 14:29 |
|
|
Ciao avyje, e Benvenuta nel Forum :)
Il codice che usi è un po' incasinato
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 |
|
|
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 02.03.10 | 11:45 |
|
|
No no, io dico proprio da AS
Prova a scrivere in quel campo di testo che c'è in alto a destra: TWEEN
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 |
|
|
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
Oggetto:
Inviato: 02.03.10 | 12:38 |
|
|
Ok, provo a documentarmi e ad usare la tween da AS.
Per il momento GRAZIE! |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 02.03.10 | 12:40 |
|
|
de nada, alla prossima  ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
Oggetto:
Inviato: 11.03.10 | 18:14 |
|
|
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 |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 14.03.10 | 20:14 |
|
|
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 |
|
|
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
Oggetto:
Inviato: 15.03.10 | 11:56 |
|
|
| 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 |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 15.03.10 | 12:03 |
|
|
Dove e cosa imposti su che frame?
Pensarla in una maniera più simile alla programmazione?
...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 |
|
|
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
Oggetto:
Inviato: 15.03.10 | 14:28 |
|
|
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 |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4546
Località: Verona
|
Oggetto:
Inviato: 15.03.10 | 15:30 |
|
|
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 |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 15.03.10 | 16:26 |
|
|
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  |
|
| Torna in cima |
|
|
avyje
nuovo utente

Registrato: 27/02/10 18:00
Messaggi: 7
|
Oggetto:
Inviato: 16.03.10 | 18:04 |
|
|
| grazie mille, ci provo! |
|
| Torna in cima |
|
|
|
|
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
|
|