Aggiungere proprietà ad un MovieClip

venerdì 9 novembre, 2007

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:

Actionscript:
  1. function _get_alpha():Number {
  2.         return(this._alpha);
  3. }
  4. function _set_alpha(v:Number):Void {
  5.        new Tween(this, "_alpha", Strong.easeOut, this._alpha, v, 1, true);
  6. }
  7. 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à:

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

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

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
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL