Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 24
  1. #11
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    195
    No, il problema è solo la profondità, scusate se insisto.

    In flash ogni oggetto si trova a una profondità, alcune volte questo valore viene chiamato livello ma ci si confonde con i Layers che sono un’altra cosa.

    Questo valore di profondità (Depth) stabilisce se un elemento si trova sopra o sotto gli altri, se li copre o se è nascosto da questi.

    Quando creiamo degli oggetti con Flash non ci accorgiamo che stanno su livelli, perché questo valore non è riportato da nessuna parte nell’interfaccia del programma.
    Se invece vogliamo saperlo possiamo usare uno script:

    trace(nomeIstanza.getDepth());

    Possiamo ottenere sia valori positivi che negativi.

    Questa proprietà è molto importante perché ci permette di portare gli oggetti in primo piano o in secondo piano, a piacere.
    vedere anche swapDepths, getInstanceAtDepth.

    Per il caso in esame il valore di Profondità è importante per il comportamento che ha quando creiamo un nuovo oggetto (con duplicateMovieClip, con attachMovie e similari).
    Quando creiamo un oggetto infatti abbiamo la libertà di scegliere la profondità alla quale dobbiamo mettere quell’oggetto, il che va bene se non abbiamo nessun altro oggetto a quella profondità.

    Se abbiamo creato un MovieClip a profondità 1 e successivamente creiamo un secondo MovieClip a profondità 1 si verifica un conflitto (ad una data profondità possiamo avere un solo oggetto). Questo conflitto viene risolto da Flash con la cancellazione del contenuto a profondità 1 e la creazione del nuovo contenuto.
    Ecco perché, come dicevo nel mio primo messaggio, il primo duplicateMovieClip è stato eseguito ma l’oggetto è stato cancellato immediatamente dopo.

    Per risolvere questi problemi in maniera definitiva è stato introdotto il metodo getNextHighestDepth, ovvero “dammi il prossimo valore di profondità disponibile”, ovvero il numero più basso possibile superiore agli oggetti già presenti sullo Stage.
    Useremo questo valore per dare la profondità ai due oggetti creati, così da non avere conflitti.

    onClipEvent(enterFrame){
    count += 1;
    cnt += 1;
    duplicateMovieClip ("_root.spark", "spark" + count, getNextHighestDepth());
    duplicateMovieClip ("_root.sparkA", "sparkA" + cnt, getNextHighestDepth());
    }

    Ecco risolto il problema...
    Attenzione però, la guida di Flash ci avverte di una limitazione:
    se si utilizzano i componenti versione 2, non utilizzare questo metodo. Se un componente versione 2 è stato collocato sullo stage o nella libreria, il metodo getNextHighestDepth() restituisce la profondità 1048676, che non rientra nell'intervallo valido. Se si utilizzano i componenti versione 2, utilizzare sempre la classe DepthManager dei componenti della versione 2.

  2. #12
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Cmq dico, se metto nelle impostazioni di pubblicazioni, flash 8, la duplicazione funziona solo sull'ultimo movie creato, e in questi nn vanno le funzione che ho messo per il this._y...
    Dico questo, perchè mi servirebbe utilizzare il flash 8 per avere le maschere sfumate...
    Mi date una mano, "pasavign" tu che mi puoi dire...?
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  3. #13
    Originariamente inviato da paololosco
    Non sono programmatore e non ho la pretesa di esserlo, quindi può benissimo darsi che scriva svariate pu ... ... ... ... ... te (giochiamo all'impiccato!!!! ) però sullè"enterFrame" ho semper associato più comandi (dai più basilari come "_root.nomeistanza1.gotoAndPlay" a quelli un pochettino più complessi, per far partire più eventi allo stesso click...) e non ho mai avuto problemi... dici che è errato?
    Quello che voglio dire è questo:
    codice:
    (1)
    onClipEvent(enterFrame) {
          // 
          // ... qui dentro posso scrivere quante istruzioni voglio
          // ... p.es. richiamare la funzione pippo
          pippo();
          //
    }
    (2) 
    onClipEvent(enterFrame) {
          // 
          // ... qui dentro posso scrivere quante istruzioni voglio
          // ... p.es. richiamare la funzione pluto
          pluto();
          //
    }
    Se associo un codice del genere ad un movieclip, il risultato sarà che, al verificarsi dell'evento "enterFrame" verrà richiamata sempre e solamente la funzione pluto, perché la seconda "enterFrame" sostituisce la precedente.
    Se voglio che entrambe dette funzioni vengano eseguite, dovrò scrivere:
    codice:
    (3) 
    onClipEvent(enterFrame) {
          // 
          // ... qui dentro posso scrivere quante istruzioni voglio
          // ... 
          pippo();
          pluto();
          //
    }

  4. #14
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Ma qualcuno legge quello che SCRIVO??????

    "pasavign": ti ho detto che funge anche come dice "jollyfish"...
    Mi puoi dare una mano per quello che sto scrivendo???
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  5. #15
    Premesso che jollyfish ha spiegato perfettamente il problema dei livelli, o meglio delle profondità, che pure io ti avevo già segnalato, suggerendoti una correzione del codice un po' sbrigativa ma valida per il tuo caso...

    e considerando i tuoi ultimi post
    Originariamente inviato da Donovant
    ...
    Beh, funziona in tutti e 2 i modi, sia che replicare un altro enterFrame con duplicateMovieClip, oppure mettere un altra variabile che parta anzichè da 1 da 1000 (perchè se metto 10 quando viene duplicato il numero 10 del primo movieclip il secondo sparisce)....
    e...
    Originariamente inviato da Donovant ù
    Cmq dico, se metto nelle impostazioni di pubblicazioni, flash 8, la duplicazione funziona solo sull'ultimo movie creato, e in questi nn vanno le funzione che ho messo per il this._y...
    Dico questo, perchè mi servirebbe utilizzare il flash 8 per avere le maschere sfumate...
    Mi date una mano, "pasavign" tu che mi puoi dire...?
    Perché non pubblichi l'intero tuo codice ?
    Almeno così capiamo cosa devi fare...

  6. #16
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    195
    Effettivamente c’è un problema di comunicazione...

    Ho scritto tante righe sul Depth e non mi ero accorto che Pasavign ti aveva già risposto, ora ho letto che funziona in tutti e due i modi e ho letto anche che non funziona più.

    Ho letto il problema del Frame, che si potrebbe risolvere con un IF, utilizzando _currentFrame.

    Ho letto che a un certo punto usi this._y ma non funziona in Flash 8 e non riesco a capire dove si trova e perché non funziona.

    Possiamo ricominciare da capo? Mi sono perso.

  7. #17
    Originariamente inviato da Donovant
    Ma qualcuno legge quello che SCRIVO??????
    (1)

    "pasavign": ti ho detto (2) che funge anche come dice "jollyfish"...
    (3)Mi puoi dare una mano per quello che sto scrivendo???
    (1)
    Evidentemente, qualcuno c'è, visto che in diversi ti stiamo rispondendo.
    Caso mai sei tu che non leggi attentamente perché se noti il mio post al quale tu hai risposto in maniera così poco gentile era indirizzato a paololosco

    (2)
    Modera i termini. Quel ti ho detto è proprio fuor di luogo.

    (3)
    Questo è un Forum, non una CHAT, devi mettere in conto che mentre stai scrivendo, qualcun altro posti altre domande e/o risposte.

    Normalmente non perdo mai la pazienza ma, se insisti con questo tono, non garantisco...

  8. #18
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    pasavign: "ti ho detto", è per spiegare che era già la seconda volta che lo ribadivo...fuori luogo è il fatto che te la sia presa per lo stesso...

    1) Il duplicateecc... l'ho utilizzato contemporaneamente nella stesso enterframe per 2 movieclip e 2 con altre 2 enterframe diverse, ma sempre all'interno dello stesso movie clip...
    Vi posto il codice così saptrete dire di più:

    Questo è il movie clip N1 che dovrebbe essere seguito nelle coordinate dagli altri movieclip + sotto
    codice:
    onClipEvent(enterFrame){
    	
    	count1 +=1;
    	duplicateMovieClip ("_root.spark", "spark" + count, count);
    	setProperty ("_root.spark" + count, _alpha, Math.random ()*120 + 10);
    
    	
    	cnt +=1000;
    	duplicateMovieClip ("_root.sparkC", "sparkC" + cnt, cnt);
    	setProperty ("_root.sparkC" + cnt, _alpha, Math.random ()*120 + 10);
    	
    	
    }
    
    onClipEvent(enterFrame){
    	
    	count2 +=1;
    	duplicateMovieClip ("_root.sparkA", "sparkA" + count, count);
    	setProperty ("_root.sparkA" + count, _alpha, Math.random ()*120 + 10);
    }
    
    onClipEvent(enterFrame){
    	
    	count3 +=1;
    	duplicateMovieClip ("_root.sparkB", "sparkB" + count, count);
    	setProperty ("_root.sparkB" + count, _alpha, Math.random ()*120 + 10);
    }
    
    onClipEvent(enterFrame){
    	
    	count4 +=1;
    	duplicateMovieClip ("_root.sparkD", "sparkD" + count, count);
    	setProperty ("_root.sparkD" + count, _alpha, Math.random ()*120 + 10);
    }
    Questo è il coedice di uno dei movieclip, gli altri variano solo per il valore di alcune variabili

    codice:
    onClipEvent(load){
    	this._x = _root.luce._x;
    	this._y = _root.luce._y+10;
    	}
    
    onClipEvent (enterFrame){
    	
    	this._x -= Math.random()*5 -2.5;
        this._xscale = Math.random()*(_root.luce._xscale/3);
        this._yscale = this._xscale;
        v = Math.sqrt(2*9*this._y)/7; 
        this._y +=  this._xscale/30*v;
        this._alpha -= (v/3.5);
    	
    	if (this._alpha < 5) {
    		 removeMovieClip (this);
    		
    	}
    }
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  9. #19
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Ah da ribadire che se imposto flash 5, nella pubblicazioni del filmato, il tutto funge, ma il fatto è che mi serve utilizzare una maschera sfumata quindi 8 bit e non a 1 (vedo / non vedo).
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  10. #20
    A volte può succedere che un codice scritto in maniera errata sembri funzionare!
    Questo può accadere per vari motivi, principalmente perché, casualmente, Non si verifica il caso NON previsto.

    La premessa è necessaria per ribadire quello che sto cercando di spiegare circa l'evento "enterFrame".
    Come saprai, il codice inserito nell'evento enterframe viene riprodotto "ciclicamente" per ogni frame, e questo senza sosta a meno che non lo si interrompa in quanlche modo.

    Aggiungo che il codice che stai utilizzando è piuttosto obsoleto e risale, direi a Flash 4.
    Allora si usava associare il codice direttamente alle istanze, selezionandole con un click ed aprendo poi il pannello delle azioni.
    Il risultato era che, una volta attivato un evento "enterframe", questo rimaneva attivo per sempre.
    Da Flash 6 (MX) in poi, con lo sviluppo della classe movieclip, questa veniva implementata con molti metodi e con la gestione degli eventi, in maniera da poterli anche cancellare una volta non più utili.

    Il codice che hai postato, funzionerà anche, ma oserei dire, per puro caso.
    Inoltre fa l'uso di parecchi metodi e proprietà "deprecati" in quanto obsoleti da tempo e per questo NON funzionanti se pubblicati con Flash8.

    Per tornare al tuo caso specifico, al codice che dici di aver associato al movieclip N1.
    Orbene allo stesso clip hai associato 4 volte l'evento enterFrame.
    Numeriamole da 1 a 4 (dall'alto in basso) per intenderci.
    La prima volta vengono eseguite tutte e 4 in sequenza, ma in questa maniera:
    > Viene eseguita la numero (1)
    > Viene eseguita la numero (2) che rimpiazza la (1) che sparisce
    > Viene eseguita la numero (3) che rimpiazza la (2) che sparisce
    > Viene eseguita la numero (4) che rimpiazza la (3) che sparisce
    Alla fine del primo giro rimarrà attivo solamente il codice compreso nel 4° richiamo dell'evento "enterFrame"

    Capito come funziona?

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