Flash CSx / AS3: Utilizziamo la classe DisplayObject come alternativa ad attachMovie (as2.0)
In Flash CS 3 e ActionScript 3.0, non è più possibile utilizzare l’utilissimo metodo attachMovie, disponibile nelle versioni precedenti di actionscript, che permetteva di prelevare un movieclip dalla libreria e di visualizzarlo runtime sullo Stage.
In questo articolo utilizzeremo un semplice script alternativo, in actionscript 3.0, per realizzare una lista di elementi cliccabili, utilizzando un array come fonte dati e un movieclip in libreria, come grafica del pulsante.
Sfrutteremo, infine, la classe DisplayObject per posizionare e visualizzare gli elementi sullo Stage.
PREPARARE L’AREA DI LAVORO IN FLASH CS 3
Apriamo Flash CS 3 e creiamo un nuovo File Flash (ActionScript 3.0).
Inseriamo un nuovo MovieClip, chiamato button01, composto da due livelli: uno conterrà l’area cliccabile, ovvero un semplice rettangolo; nell’altro inseriremo, invece, un campo di testo dinamico con nome istanza testo.
Eliminiamo, quindi, dallo Stage l’intero MovieClip, lo selezioniamo dalla libreria utilizzando il pulsante destro del mouse e scegliamo la voce Linkage, come in un normale file Flash Actionscript 2.0.
Selezioniamo il checkbox Export for ActionScript, accentando i parametri di default che Flash ci proporrà, e clicchiamo nuovamente su OK nel caso in cui dovesse apparire una finestra di avviso.
Il valore dell’attributo Class – button01 - sarà utilizzato nel nostro codice per far riferimento alla MovieClip in libreria.
IL CODICE ACTIONSCRIPT 3.0
Posizioniamo lo script seguente sul primo frame del file .FLA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | // Il Contenitore di tutti gli elementi che visualizzeremo var container:Sprite = new Sprite(); addChild(container) // Distanza Verticale tra i pulsanti var vertGap:Number = 5; // Array Dati var name_array:Array = new Array(); name_array.push({company: "Adobe", link: "www.adobe.com"}) name_array.push({company: "Adobe Lab", link: "labs.adobe.com"}) name_array.push({company: "AugItaly", link: "www.augitaly.com"}) name_array.push({company: "FlexGala", link: "www.augitaly.com/flexgala"}) name_array.push({company: "Elastech", link: "www.elastech.it"}) // Creazione dei pulsanti for (var i:Number = 0; i < name_array.length; i++){ // Creazione dell'istanza dell'elemento acquisito dalla libreria var tempButton:button01 = new button01(); // Attiviamo la modalità buttonMode su true, ad indicare che // il nostro elemento dovrà essere trattato come un pulsante tempButton.buttonMode = true; // Testo visualizzato (acquisito dall'array) tempButton.testo.text = name_array[i].company // Associamo all'elemento nome e link tempButton.company = name_array[i].company tempButton.link = name_array[i].link // Visualizziamo l'elemento, aggiungendolo alla DisplayList var button:DisplayObject = container.addChild(tempButton) // Posizione y progressiva button.y = (button.height + vertGap) * i; // Abbiniamo al pulsante i listener Click, Mouse Over e Mouse Out button.addEventListener(MouseEvent.CLICK, onClick); button.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); button.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); } // CLICK // Output del nome e del link associato al pulsante function onClick(event:MouseEvent) { trace("onClick: " + event.currentTarget.company + " -> " + event.currentTarget.link) } // MouseOver // Il pulsante viene spostato di 5 pixel a destra al passaggio del mouse function onMouseOver(event:MouseEvent) { event.currentTarget.x += 5; } // MouseOut // Il pulsante viene spostato di 5 pixel a sinistra all'uscita del mouse function onMouseOut(event:MouseEvent) { event.currentTarget.x -= 5; } |
Il risultato dello script:














Leave your response!