Aggiungere proprietà ad un MovieClip

Nel Post Estendere i MovieClip in Adobe Flash MX avevo illustrato alcune tecniche per estendere un MovieClip. In particolare avevo detto che l’uso di MovieClip.prototype non permetteva l’estensione di proprità ma solo di metodi:

[...] Due importanti limitazioni di questa tecnica sono:

  1. Non può essere applicata a tutti gli oggetti esposti da Flash
  2. Possono essere “aggiunti” solo metodi e non proprietà [...]

In verità è possibile, con un passaggio in più, aggiungere dinamicamente proprietà anche usando MovieClip.prototype. Prima dell’introduzione di function get e function set, infatti, Flash permetteva l’aggiunta di proprietà (in lettura/scrittura o solo lettura) tramite il metodo addProperty(). Nella pratica questo si traduce nell’invocazione del metodo addProperty() e nella definizione di due funzioni getter e setter. La setter può essere null così da creare proprietà in sola lettura. Ad esempio se volessimo estendere tutti i MovieClip con una nuova proprietà _alpha in grado di aggiungere un’animazione, basta scrivere il seguente codice:

1
2
3
4
5
6
7
function _get_alpha():Number {
        return(this._alpha);
}
function _set_alpha(v:Number):Void {
       new Tween(this, "_alpha", Strong.easeOut, this._alpha, v, 1, true);
}
MovieClip.prototype.addProperty("_alpha_tween", _get_alpha, _set_alpha);

Da questo momento in poi se abbiamo un simbolo “miosimbolo_mc” possiamo sfruttare questa nuova proprietà:

1
miosimbolo_mc._alpha_tween = 50;

Quello che non è possibile fare, invece, è sovrascrivere le proprietà esistenti; per questo motivo ho usato _alpha_tween invece di _alpha. Ecco, quindi, un buon motivo per usare comunque le Classi 2.0 per estendere – e derivare – eventuali MovieClip.

3 commenti a: “Aggiungere proprietà ad un MovieClip”

  1. 11 nov, 2007 Cristian:

    Si c’è da considerare anche che definendo MovieClip.prototype… questo vale per qualsiasi MovieClip sullo stage con un conseguente spreco di risorse da parte del Player.
    Grazie alla OOP e alle classi introdotte in AS2.0 tutto ciò è diventato deprecato e obsoleto.
    Ciao e complimenti per gli ottimi post.

  2. 11 nov, 2007 Giovambattista Fazioli:

    Giusto! L’unica cosa buona di questo metodo è nei casi in cui tutti i MovieClip devono disporre di una particolare proprità o metodo. In questo caso o si crea una classe IUnknown che ereditano le classi successive o si usa l’ancora disponibile MovieClip.prototype…

  3. 09 dic, 2007 upnews.it:

    undolog » Blog Archive » Aggiungere proprietà ad un MovieClip…

    Nel Post Estendere i MovieClip in Adobe Flash MX avevo illustrato alcune tecniche per estendere un MovieClip. In particolare avevo detto che l’uso di MovieClip.prototype non permetteva l’estensione di proprità ma solo di metodi:…

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
					<code></code> // blocco generico
					[cc_actionscript][/cc_actionscript] // Actionscript
					[cc_actionscript3][/cc_actionscript3] // Actionscript 3
					[cc_css][/cc_css] // CSS Style Sheet
					[cc_html][/cc_html] // HTML
					[cc_js][/cc_js] // Javascript
					[cc_objc][/cc_objc] // Objective-C
					[cc_php][/cc_objc] // PHP
					[cc_sql][/cc_sql] // SQL


Stop SOPA