Tutorial Flash AS3: Profondità degli Oggetti

- Letture: 3.400

Continuano i Tutorial di ActionScript3 su JuliusDesign, oggi andiamo a vedere come gestire la profondità di un oggetto.

Con ActionScript 2 possiamo usare la funzione swapDepths(); che ci permette di stabilire la profondità degli oggetti.

Una bella notizia! Il swapDepths e metodi getNextHighestDepth non esistono più in ActionScript 3.0.

Andiamo a vedere insieme cosa bisogna usare in ActionScript 3.

In ActionScript 3 dovremo utilizzando i DisplayObjectContainer, metodi associati con un MovieClip aggiunto all’elenco di visualizzazione.

Ecco un esempio di codice:

function arrangeBoxes():void {
for (var i:int = 0; i < 3; i++) {
var boxColor:ColorTransform = new ColorTransform();
boxColor.color = (Math.random() * 0xFFFFFF);
var box:Box = new Box();
box.x = ((i * 80) + box.width);
box.y=100;
box.transform.colorTransform=boxColor;
box.buttonMode=true;
box.addEventListener(MouseEvent.MOUSE_OVER, swapMyDepth);
this.addChild(box);
}
}
function swapMyDepth(evt:MouseEvent):void {
this.setChildIndex(Box(evt.target), (this.numChildren - 1));
}
arrangeBoxes();

In questo esempio vengono creati dei box colorati dentro dei clip filmati che verranno resi pulsanti.

Ogni movie clip avrà come valore di profondità in base alla creazione e cambierà sullo stato Over del mouse.

Vediamo meglio il codice nel dettaglio:

function arrangeBoxes():void {
for (var i:int = 0; i < 3; i++) {
var boxColor:ColorTransform = new ColorTransform();
boxColor.color = (Math.random() * 0xFFFFFF);
var box:Box = new Box();
box.x = ((i * 80) + box.width);
box.y=100;
box.transform.colorTransform=boxColor;
box.buttonMode=true;

Inizializzo un ciclo di 3 elementi movie clip di altezza 100 e larghezza 80.

Infine applico le proprietà sull’oggetto e lo rendo come un pulsante.

box.addEventListener(MouseEvent.MOUSE_OVER, swapMyDepth);
this.addChild(box);

Sull’evento Over del mouse associ la proprietà di profondità maggiore.
function swapMyDepth(evt:MouseEvent):void {
this.setChildIndex(Box(evt.target), (this.numChildren - 1));
}

Inizializzo la funezione swapMyDepth sull’oggetto
arrangeBoxes();

Richiamo la Funzione

Come sempre ecco i files di esempio da scaricare.

Stratega, Docente, Speaker con più di 12 anni di esperienza in strategie creative multicanale. Oggi sono Partner & Chief Innovation Officer di ThinkingHat, Innovation Studio specializzato in tecnologie emergenti per aziende e brand audaci.

6 Commenti

  1. Deja_rulez

    E’ molto comodo come sistema, rispetto a prima bisogna far attenzione al fatto che flash “reimpila” gli oggetti quando questi vengono levati dall’elenco di visualizzazione

    Infatti rispetto ad as2 non si possono più lasciare livelli “vuoti” nell’elenco di visualizzazione.

    Ottimo tutorial!

  2. Se invece ho un swf che ne carica un’altro, come faccio a gestire la profondità? Mi spiego meglio sul primo swf ho 2 clip, la MC_1 è al di sopra della MC_2, nella MC_2 carico un swf esterno che a sua volta carica diverse immagini, queste immagini però vanno sopra all’MC_1 e nn sotto come mi sarei aspettato, come faccio a portare l’swf caricato esternamente sotto l’MC_1?

  3. Deja_rulez

    @Peter

    non dovrebbe succedere questo, a meno che l’swf che caricato a mc_2 non vada poi a caricare le immagini nell’elenco di visualizzazione principale (quindi faccia un addChild nella “root”).

    controlla il codice, nel caso nel codice dell’swf caricato dentro al MC_2, crei un clip vuoto e fai caricare le immagini tutte li dentro.

Commenti