Home » ActionScript 3.0, Adobe, Flash AS 3

Flash CSx / AS3: Utilizziamo la classe DisplayObject come alternativa ad attachMovie (as2.0)

30 November 2007 No Comment

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.

image1

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.

image2

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:

image3

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.