Domanda

Come si fa a fare riferimento a una bitmap sullo stage in flash utilizzando ActionScript 3?

Ho una bitmap sul palco in flash e alla fine del film vorrei sostituirla con quella successiva nella sequenza prima che il film vada in loop.nella mia libreria ho 3 immagini, esportate per actionscript, con il nome della classe img1/img2/img3.ecco come sono disposti i miei layer in flash.

layer 5 : mask2:MovieClip
layer 4 : img2:Bitmap
layer 3 : mask1:MovieClip
layer 2 : img1:Bitmap
layer 1 : background:Bitmap

alla fine del film vorrei scambiare img1 con img2, in modo che il film si ripeta senza interruzioni, quindi idealmente scambiare img2 (sul livello 4) con img3 e così via fino ad arrivare alla fine delle mie immagini.

ma non riesco a trovare come fare riferimento alle immagini che sono già state messe in scena (in fase di progettazione), qualcuno ha idea di come farlo?

Si spera che il filmato finale carichi le immagini dinamicamente dal server web (ho il codice per questa parte) e le visualizzi insieme a img1/img2/img3.

Qualsiasi aiuto sarebbe apprezzato.

MODIFICARE:

@81bronco , l'ho provato ma il nome dell'istanza è disattivato per la grafica, mi consentirà di farlo solo con clip filmato e pulsanti.Sono riuscito a farlo funzionare a metà trasformandoli in moveclip e cancellando le immagini nel moveclip prima di aggiungerne una nuova (usando qualcosa di più semplice di quello vanhornRF suggerito), ma per qualche strana ragione quando la maschera entra nelle immagini che ho cancellato ritornano per l'animazione della maschera.

È stato utile?

Soluzione

Per fare riferimento a qualcosa sullo stage, devi dare un nome all'istanza dello stage, non dare un nome di classe al simbolo nella libreria.

Fai clic sull'elemento sullo stage e osserva il pannello delle proprietà.Dovrebbe essere presente una casella di immissione testo appena sopra le caselle di immissione delle dimensioni dell'articolo.Inserisci un nome lì.

In altre parti del codice è possibile fare riferimento all'elemento sullo stage tramite il nome dell'istanza.

Altri suggerimenti

Dovrebbe essere qualcosa del genere:

imageHolder.removeChild( imageIndex )

O

imageHolder.removeChildByName( imageName )

dopodiché

imageHolder.addChild( newImage )

Probabilmente farei qualcosa di simile nella tua classe di documenti

for(var i:int=0; i<numChildren; i++){
    trace(getChildAt(i),"This is the child at position "+i);
}

Lo faccio perché codifico ancora nell'IDE flash e il suo debugger è molto doloroso da far funzionare per la maggior parte del tempo, è più semplice tracciare semplicemente le variabili, quindi puoi usarlo per il ciclo for per stampare i nomi degli oggetti degli elementi attualmente sul tuo stage oppure usa un programma debugger per trovare anche gli oggetti.

Ora che hai i figli e a quale indice si trovano effettivamente all'interno dello stage, puoi fare riferimento a loro chiamando getChildAt(int), puoi rimuovereChildAt(int), puoi addChildAt(displayObject, int) e swapChildrenAt(int, int ).L'int in questi argomenti rappresenterebbe la posizione dell'indice restituita dall'istruzione trace e displayObject rappresenterebbe ovviamente semplicemente tutto ciò che desideri aggiungere allo stage o al DisplayObject genitore.

Usando questi 4 comandi dovresti essere in grado di riorganizzare liberamente tutti i clip filmato che hai sul palco in modo che sembrino passare senza interruzioni.

@81bronco Dovresti assolutamente nominare le tue risorse sul palco se vuoi fare riferimento ad esse in modo univoco e specifico per evitare confusione se finiscono per esserci molti elementi sul palco

Ehi Re0sless, quando rimuovi quegli elementi dallo stage hanno degli ascoltatori di eventi collegati, dei timer o dei caricatori?Ognuna di queste cose può far sì che un oggetto rimanga nella memoria flash e non venga rimosso correttamente.Inoltre, oltre a rimuovere semplicemente l'elemento, forse prova anche ad annullarlo?A volte ciò aiuta a eliminare i suoi riferimenti in modo che possa essere adeguatamente distrutto.

Ovviamente potrebbe anche essere qualcosa di stupido come rimuovere l'oggetto in un'istanza non rimuove l'oggetto anche dai frame futuri, ma non penso davvero che sia il caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top