Riprendendo il Post StageExt Class: filmati ridimensionabili in Flash ecco un modo ancor più semplice per ottenere il medesimo effetto, solo se nella libreria del nostro filmato è presente almeno un componente Flash!
Create un simbolo, un quadrato rosso 100×100 e ponetelo nella stage chiamandolo resizeWindow. Inserire in libreria, non nello stage, un componente qualsiasi, ad esempio un TextInput, e scrivete il seguente codice nel primo fotogramma del filmato.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import mx .managers .SystemManager ;
//
Stage.scaleMode = "noscale"
//
//SystemManager.init();
SystemManager .addEventListener("resize", resizeWindow );
//
resizeWindow .resize = function(Void ):Void {
var s :Object = SystemManager .screen ;
this._width = s .width;
this._height = s .height;
this._x = Math.round(s .x);
this._y = Math.round(s .y);
}
resizeWindow .resize(); |
La riga 6 (SystemManager.init();) può essere omessa.
Continua...
La tecnica del Fullsize (anticamera per il Fullscreen – di cui parleremo in seguito) era, fino a poco tempo fa, utilizzata soprattutto nelle applicazioni Flash (RIA), composte quindi da una più o meno complessa interfaccia utente, dove il contenitore (Adobe AIR, Browser o il Player stand-alone) ridimensionato dall’utente, costringeva ad un riposizionamento degli oggetti componenti il filmato. Al ridimensionamento del contenitore segue ovviamente una funzione di disegno o Refresh in grado di riposizionare i MovieClip o ridisegnare runtime l’interfaccia in base alle nuove dimensioni del contenitore. Oggi questa tecnica è utilizzata anche nei siti web più avanzati o articolati, rendondo l’interfaccia estremamente piì accattivante. L’implementazione di questa tecnica è abbastanza semplice e sfrutta sostanzialmente l’oggetto Stage nativo di Flash e introdotto con la versione MX. Per la sua implementazione ecco una classe che permette di ottenere le coordinate dell’area dello Stage:
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| /**
*
* @file StageExt.as
* @author Giovambattista Fazioli (g.fazioli@undolog.com)
* @web http://www.undolog.com
* @email g.fazioli@undolog.com
*/
class StageExt {
// release
private var __release :String = "1.0";
// properties
private var __movieWidth :Number = 0;
private var __movieHeight :Number = 0;
private var __left :Number = 0;
private var __right :Number = 0;
private var __top :Number = 0;
private var __bottom :Number = 23;
//
function StageExt (w :Number, h :Number) {
trace("StageExt::constructor");
//
__movieWidth = w ;
__movieHeight = h ;
//
Stage.addListener (this);
}
/**
* onResize() event
*/
private function onResize () {
trace("StageExt::onResize " + Stage.width + ", " + Stage.height);
//
var sw :Number = Math.round(Stage.width);
var sh :Number = Math.round(Stage.height);
var ow :Number = Math.round(this.__movieWidth );
var oh :Number = Math.round(this.__movieHeight );
// La coordinata x (in alto a sinistra)
this.__left = -Math.floor(((sw - ow ) / 2));
this.__top = -Math.floor(((sh - oh ) / 2));
// La coordinata x (in alto a destra)
this.__right = Math.round((sw + ow ) / 2);
// La coordinata y (in basso)
this.__bottom = Math.round((sh + oh ) / 2);
}
/**
* Refresh()
*/
public function Refresh () {
onResize ();
}
/**
* Left - get
*/
public function get Left ():Number {
return (__left );
}
/**
* Top - get
*/
public function get Top ():Number {
return (__top );
}
/**
* Right - get
*/
public function get Right ():Number {
return (__right );
}
/**
* Bottom - get
*/
public function get Bottom ():Number {
return (__bottom );
}
/**
* MovieWidth - get/set
*/
public function get MovieWidth ():Number {
return (__movieWidth );
}
public function set MovieWidth (v :Number) {
__movieWidth = v ;
}
/**
* MovieHeight - get/set
*/
public function get MovieHeight ():Number {
return (__movieHeight );
}
public function set MovieHeight (v :Number) {
__movieHeight = v ;
}
} |
Continua...
Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...