Flash: maschera su slide immagini.

Di: felixyorke78 | 26/09/2020 18:33:18
ciao a tutti,
Allora, sto creando un mio sito in flash e volevo sfruttare un tutorial trovato on-line per lo slide immagini(precisamente http://flash.html.it/guide/lezione/...de-di-immagini/ ). ok ci sono riuscito.
ma quando il filmato lo voglio inserire nell stage principale(più grande), mi viene fuori tutta la barra con le immagini, non l'immagine una per una.(spero di essere stato chiaro).
ho provato a mascherare, ma niente.anzi succede una cosa strana. dopo un giro la maschera non funziona più, e dopo un giro senza maschera ritorna come prima, e poi sempre così....
cosa ho sbagliato?aiuto!!!
felix
in caso vi mando il file così vedete cosa non va

Risposte



Ciao felixyorke78,
Il link che hai inserito non è esatto, quindi non so di cosa stiamo parlando...
Posso consigliarti solamente di inserire l'elemento che hai creato dentro a un movieclip, e di mascherare il movieclip contenitore.
Probabilmente le immagini perdono la maschera per via di uno swapDepth o qualcosa di simile, che li sposta a un livello superiore rispetto alla maschera, se fosse tutto dentro a un movieclip non avresti il problema, in quanto una maschera che si trovasse fuori dal movieclip sarebbe sempre ad un livello superiore.
Ciao.

Di: Professore | 26/09/2020 18:33:18


scusa, il link esatto è questo http://flash.html.it/guide/lezione/2863/slide-di-immagini/
cmq hai capito cosa intendo.
ho provato ha fare quello che mi dici, solo che non funziona. l'animazione si ferma.
ho paura di aver sbagliato qualcosa nel codice

Di: felixyorke78 | 26/09/2020 18:33:18


Ciao felixyorke,
il tutorial che hai seguito è stato fatto per funzionare con Flash 5, pessima scelta... già da Flash MX la procedura da usare per realizzare un filmato simile è stata migliorata parecchio:
Non c'è più bisogno di importare le immagini dentro Flash, le puoi caricare direttamente con il proiettore, così che se devi cambiare una foto o aggiungerne di nuove non hai bisogno di aprire nuovamente il progetto.
http://www.risorseflash.it/tutorial/tutorial2.asp?id=151&pagina=1
Questo è un tutorial su come realizzare un filmato che legge da un foglio XML la lista delle immagini da caricare per poi creare una galleria.
Se non ti interessa approfondire questo aspetto, o non hai il tempo per farlo ti svelo subito il motivo per cui il filmato non funziona se tutto è inserito dentro a un movieClip anziché sulla linea principale...
Queste sono due righe a caso dallo script del tutorial che hai seguito:
_root.barra1.duplicateMovieClip("barra2", 2);
_root.barra2._x = destra;
Come vedi c'è un riferimento a _root che è la linea principale, questo fa sì che gli oggetti da muovere siano ricercati sulla linea principale, non vengono trovati perché li abbiamo messi dentro a un movieClip.
Assegna a questo movieClip un nome istanza, per esempio “miaSlide”, e correggi tutte le ricorrenze di _root nello script, assegnando un riferimento alla clip “miaSlide”, in questo modo:
_root.miaSlide.barra1.duplicateMovieClip("barra2", 2);
_root.miaSlide.barra2._x = destra;
Queste sono solo due righe di esempio, nello script i riferimenti a _root sono molti di più, vanno corretti tutti.

Di: Professore | 26/09/2020 18:34:18


ok.dovrebbe funzionare, ma ora il prob è un'altro.
dopo aver cambiato le istanze nella _root il filmato si muove solo verso destra ad una velocità alta.gestisco la velocità ,ma non riesco a capire perchè si muove solo in un senso.
ti mando il codice che ho fatto.
onClipEvent (load) {
centro = _root.miaSlide.barra1._x;
larghezza = _root.miaSlide.barra1._width;
destra = centro + larghezza;
sinistra = centro - larghezza;
_root.miaSlide.barra1.duplicateMovieClip("barra2", 2);
_root.miaSlide.barra2._x = destra;
}
onClipEvent (mouseMove) {
_x = _root._xmouse;
}
onClipEvent (enterFrame) {
mouseX = Math.round(_x-centro)*+1;
mouseX = Math.round(mouseX/15);
_root.miaSlide.barra1._x += mouseX;
_root.miaSlide.barra2._x += mouseX;
miaSlide.barra1X = _root.miaSlide.barra1._x;
miaSlide.barra2X = _root.miaSlide.barra2._x;
if (miaSlide.barra1X < sinistra) {
_root.miaSlide.barra1._x = miaSlide.barra2X + larghezza;
}
if (miaSlide.barra2X < sinistra) {
_root.miaSlide.barra2._x = miaSlide.barra1X + larghezza;
}
if (miaSlide.barra1X > destra) {
_root.miaSlide.barra1._x = miaSlide.barra2X - larghezza;
}
if (miaSlide.barra2X > destra) {
_root.miaSlide.barra2._x = miaSlide.barra1X - larghezza;
}
}
grazie di tutto.

Di: felixyorke78 | 26/09/2020 18:34:18


cmq se mi dici che la versione in xml è migliore sarei interessato, ma l'effetto che vorrei non è quello dell'esempio che mi ha dato tu.
dovrei usare il codice che già ho oppure c'e n'è un altro?

Di: felixyorke78 | 26/09/2020 18:35:18


Si tratta sempre di un problema di riferimenti...
La barra si dovrebbe muovere in base alla posizione _x del mouse. La parte di script in cui chiedi qual'è la posizione _x del mouse è questa:
onClipEvent (mouseMove) {
_x = _root._xmouse;
}
Che usa il sistema di riferimento della _root (in cui il punto 0,0 si trova in alto a sinistra) quindi il tuo mouse si trova sempre alla destra del punto 0,0 (a meno che tu non ti sposti con il mouse fuori dallo stage).
Anche il riferimento alla posizione del mouse può essere calcolato “relativamente” a un movieClip, quindi sostituendo quel pezzo di codice avremo un:
onClipEvent (mouseMove) {
_x = _root.miaSlide._xmouse;
}
Che fa esattamente lo stesso mestiere dello script di sopra, ma invece di utilizzare il sistema di riferimento della _root utilizzerà il sistema di riferimento della clip “miaSlide”, il cui centro non è per forza in alto a sinistra, ma è dove decidi tu.

Di: Professore | 26/09/2020 18:35:18


Ok funziona, grazie davvero.
Ora però mi si forma un altro problema.
Il filmato con maschera è ok, solo che se lo inserisco in un filamo più grande non si vede.
ti spiego meglio.
quel filmato dovrebbe far parte di un sito.
Al cliccare cel mouse parte il filmato. Non ho usato un loadmouvie, ma:
on (release) {
gotoAndStop(2);
}
al cliccare del mouse mi appare il filamo principale un po' chiaro, ma niente filmato della galleria immagini.
Dovrei usare un'altra tecnica?

Di: felixyorke78 | 26/09/2020 18:35:18


I riferimenti alla _root valgono solamente se il filmato gira da solo...
se lo carichi dentro un filmato più grande la _root è la _root del filmato grande, non più quella del filmato della galleria...
prova a inserire sul primo fotogramma del tuo filmato galleria questo rigo:
this._lockroot = true
la proprietà _lockroot serve a dire a un filmato di riferirsi alla propria _root anche se viene caricato in un filmato più grande, quindi dovrebbe fare al caso tuo.

Di: Professore | 26/09/2020 18:36:18