Come abbiamo visto più volte, nel costruttore di una classe che estende un MovieClip può essere necessario aggiungere l’evento ADDED_TO_STAGE per capire quando il nostro MovieClip è disegnato effettivamente sulla stage:
Articoli con Tag ‘Stage’
Very short trick: ADDED_TO_STAGE
Filmati ridimensionabili in Flash: atto II
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.
StageExt Class: filmati ridimensionabili in Flash
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; } } |






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...