Non sono riuscito a trovare un titolo migliore ^^
Mi stavo chiedendo se non esista già una funzione del genere (sicuramente esisterà e il topic lo scrivo anche perché così magari me la passate ^^), intanto vi posto la mia.
Praticamente serve a posizionare un clip al centro o ai bordi in tutte le combinazioni possibili. La funzione parte al resize, ma ovviamente si può lanciare a piacere. Ho messo anche un parametro lockStage, che serve per fare riferimento alle dimensioni dello stage iniziale e non quello finale.
Per fare la prova create un clip e piazzatelo nello stage chiamatelo menu (o come volete ma poi cambiate il riferimento nel codice). Create una rettangolo che copra l'area dello stage iniziale così vedete anche la differenza tra lockStage a true e a false. Provate tutte le possibili combinazioni. Ah su STAGE_A e STAGE_L ho messo l'area del mio stage, perché prendendole dinamicamente ho visto che (almeno in fase di debug) qualche volte ricevevo 956 e 546.
La funzione funziona con lo stage allineato al centro, mi piacerebbe crearla per tutte le combinazioni possibile (Stage.align="T" "TL" "BL" e via dicendo).
Codice PHP:import mx.transitions.Tween;
import mx.transitions.easing.*;
Stage.scaleMode = "noScale";
//Stage.align="T"
var STAGE_L = 960 //Stage.width;
var STAGE_A = 550 //Stage.height;
// ############################################
// # posizione un clip nello stage
// # il parametro lockStage permette di allinearsi allo stage iniziale invece di quello finale
// ############################################
MovieClip.prototype.posiziona = function(orizzontale:String, verticale:String, offx:Number, offy:Number, lockStage:Boolean):Void {
trace(STAGE_L);
if (offx == undefined) {
offx = 0;
}
if (offy == undefined) {
offy = 0;
}
var posx:Number, posy:Number;
// posizione su asse x
switch (orizzontale.toLowerCase()) {
case "left" :
case "l" :
if (lockStage) {
posx = offx;
} else {
posx = (STAGE_L-Stage.width)/2+offx;
}
break;
case "right" :
case "r" :
if (lockStage) {
posx = STAGE_L-this._width-offx;
} else {
posx = (STAGE_L-Stage.width)/2+Stage.width-this._width-offx;
}
break;
case "center" :
case "c" :
posx = (STAGE_L-this._width)/2+offx;
}
posx = Math.round(posx);
//posizione su asse y
switch (verticale.toLowerCase()) {
case "top" :
case "t" :
if (lockStage) {
posy = offy;
} else {
posy = (STAGE_A-Stage.height)/2+offy;
}
break;
case "bottom" :
case "b" :
if (lockStage) {
posy = (Stage.height-this._height)-(Stage.height-STAGE_A)-offy;
} else {
posy = (Stage.height-this._height)-(Stage.height-STAGE_A)/2-offy;
}
break;
case "middle" :
case "m" :
posy = (STAGE_A-this._height)/2+offx;
//posy = (Stage.height-this._height)/2+offy;
}
posy = Math.round(posy);
trace(Stage.width+" > "+posx+" "+Stage.height+" > "+posy);
new Tween(this, "_x", Regular.easeOut, this._x, posx, .5, true);
new Tween(this, "_y", Regular.easeOut, this._y, posy, .5, true);
};
var listResize:Object = new Object();
listResize.onResize = function() {
menu.posiziona("r", "b", 0, 0, true);
};
Stage.addListener(listResize);

Rispondi quotando
