Articoli con Tag ‘Stage’

Very short trick: ADDED_TO_STAGE

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:

Continua...

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.

Continua...

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;
    }
}

Continua...


Stop SOPA