Filmati ridimensionabili in Flash: atto II

Giovedì 8 Novembre, 2007

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

Actionscript:
  1. import mx.managers.SystemManager;
  2. //
  3. Stage.scaleMode = "noscale"
  4. //
  5. //SystemManager.init();
  6. SystemManager.addEventListener("resize", resizeWindow);
  7. //
  8. resizeWindow.resize = function(Void):Void {
  9.     var s:Object = SystemManager.screen;
  10.     this._width = s.width;
  11.     this._height = s.height;
  12.     this._x = Math.round(s.x);
  13.     this._y = Math.round(s.y);
  14. }
  15. resizeWindow.resize();

La riga 6 (SystemManager.init();) può essere omessa.

Continua a leggere... »

Post correlati

StageExt Class: filmati ridimensionabili in Flash

Martedì 16 Ottobre, 2007

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:

Actionscript:
  1. /**
  2. *
  3. * @file                StageExt.as
  4. * @author              Giovambattista Fazioli (g.fazioli@undolog.com)
  5. * @web                 http://www.undolog.com
  6. * @email               g.fazioli@undolog.com
  7. */
  8. class StageExt {
  9.     // release
  10.     private var __release          :String = "1.0";
  11.     // properties
  12.     private var __movieWidth       :Number = 0;
  13.     private var __movieHeight      :Number = 0;
  14.     private var __left             :Number = 0;
  15.     private var __right            :Number = 0;
  16.     private var __top              :Number = 0;
  17.     private var __bottom           :Number = 23;
  18.     //
  19.     function StageExt(w:Number, h:Number) {
  20.         trace("StageExt::constructor");
  21.         //
  22.         __movieWidth = w;
  23.         __movieHeight = h;
  24.         //
  25.         Stage.addListener(this);
  26.     }
  27.     /**
  28.      * onResize() event
  29.      */
  30.     private function onResize() {
  31.         trace("StageExt::onResize " + Stage.width + ", " + Stage.height);
  32.         //
  33.         var sw:Number = Math.round(Stage.width);
  34.         var sh:Number = Math.round(Stage.height);
  35.         var ow:Number = Math.round(this.__movieWidth);
  36.         var oh:Number = Math.round(this.__movieHeight);
  37.        
  38.         // La coordinata x (in alto a sinistra)
  39.        
  40.         this.__left = -Math.floor(((sw - ow) / 2));
  41.         this.__top = -Math.floor(((sh - oh) / 2));
  42.        
  43.         // La coordinata x (in alto a destra)
  44.        
  45.         this.__right = Math.round((sw + ow) / 2);
  46.        
  47.         // La coordinata y (in basso)
  48.        
  49.         this.__bottom = Math.round((sh + oh) / 2);
  50.     }
  51.     /**
  52.      * Refresh()
  53.      */
  54.     public function Refresh() {
  55.         onResize();
  56.     }
  57.     /**
  58.      * Left - get
  59.      */
  60.     public function get Left():Number {
  61.         return (__left);
  62.     }
  63.     /**
  64.      * Top - get
  65.      */
  66.     public function get Top():Number {
  67.         return (__top);
  68.     }
  69.     /**
  70.      * Right - get
  71.      */
  72.     public function get Right():Number {
  73.         return (__right);
  74.     }
  75.     /**
  76.      * Bottom - get
  77.      */
  78.     public function get Bottom():Number {
  79.         return (__bottom);
  80.     }
  81.     /**
  82.      * MovieWidth - get/set
  83.      */
  84.     public function get MovieWidth():Number {
  85.         return (__movieWidth);
  86.     }
  87.     public function set MovieWidth(v:Number) {
  88.         __movieWidth = v;
  89.     }
  90.     /**
  91.      * MovieHeight - get/set
  92.      */
  93.     public function get MovieHeight():Number {
  94.         return (__movieHeight);
  95.     }
  96.     public function set MovieHeight(v:Number) {
  97.         __movieHeight = v;
  98.     }
  99. }

Continua a leggere... »

Post correlati