| AttachMovie e addChild dalla Timeline |
|
|
| Scritto da Flep | |
| Friday 20 July 2007 | |
|
Ciauz ! Ecco un altro articolo dedicato ai meno esperti. Entriamo nel vivo ... Trackback(0)
Commenti (6)
![]() scritto da Peppe scienza, July 22, 2007
Ciao,
con AS 2.0 ero solito fare una cosa del genere: var clipNum:Number=Math.round (Math.random()*10); clipContenitore,attachMovie("clip", "clip_" clipNum); in modo che, avendo 10 clip linkate come clip_0, clip_1, clip_2 ... clip_10 ruscivo a istanzia n movieClp attraverso na stringa contenente il suo ID del linkage. Se adesso vorrei riusire a fare una cosa del genere, cosa dovrei fare? Uno switch che in base alla variabile random (o altrmenti determinata in runtime) istanzia una classe diversa con new clip_0 mi sembra un passo indietro. scritto da Peppe scienza, July 22, 2007
Il mio problema è che quando si ha un grosso numero di clip in libreria e scrivere tutto in un array diventa lungo, noioso e ricco di errori di battitura.
Poichè la pigrizia aguzza l'ingegno, alla fine quarda cosa ho trovato: var clipNum:Number=Math.round (Math.random()*10); var currentClipClass:Class=getDefinitionByName("clip_" clipNum) as Class; // "clip_" più clipNum clip=new currentClipClass(); Scrivi commento
|
|
| Ultimo aggiornamento ( Thursday 20 September 2007 ) |
| < Prec. | Pros. > |
|---|




questo editor si mangia il segno matematico più quando lo scrivo












ringrazio il curatore di questo sito. Buon lavoro, vedo che stai facendo molto.
Il sistema basilare per l'inserimento di un oggetto dalla libreria in AS3 e il vecchio attachMovie di AS2 sono veramente molto simili.
Riprendo l'oggetto "Clip" (che in libreria si chiama mc_clip) dell'esempio fatto da Flep.
Non c'è necessariamente bisogno di creare una classe (package) col nome Clip, anche se bisogna abituarsi a farlo visto che in un metodo avanzato di programmazione la creazione di script esterni ci fa espandere il lavoro dei metodi e degli oggetti; quello che però mi pare fondamentale da dire è:
col tasto destro sull'oggetto della libreria si sceglie la voce Linkage (in italiano mi sembra "concatenamento"), aprendo così il pannello delle proprietà linkage. Ciò che in Asctionscript2 continuava a chiamarsi appunto "linkage ID" (in cui indicare il nome identificativo dell'oggetto, ossia il richiamo dalla libreria di quell'oggetto attraverso actionscript) ora si chiama Class.
E' davvero tutta qui la differenza!
Silenziosamente questa è una variazione enorme, sia chiaro: stiamo parlando infatti di generazione di classi.
Indicando una classe in questo modo, Flash CREA UNA VERA E PROPRIA CLASSE (anche in assenza di un file .as creato appositamente) per quell'oggetto di libreria, e solo per quello.
Di conseguenza, e per concludere sperando di non aver fatto più confusione di prima, ecco come potremmo portare sullo stage il nostro oggetto dalla libreria (posto che sia stata definita la classe Clip nel pannello Linkage!!!):
Nel frame scriviamo:
addChild(new Clip()).name = "myClip";
dobbiamo ovviamente assegnare un nome a questo oggetto chiamato sullo stage, ovvero all'istanza dell'oggetto di libreria.
Come potete vedere, addChild è in grado di definire un nome per l'oggetto aggiunto, che può essere in sostanza creato direttamente all'interno del richiamo addChild.
la nostra istanza ora si chiama myClip e velocemente vi mostro come modificarne le proprietà:
getChildByName("myClip").x = 100;
getChildByName("myClip").y = 100;
Ecco, mi sembra in fondo una soluzione molto semplice per continuare il lavoro di attachMovie.
Saluti.