Aggiungere proprietà ad un MovieClip
Venerdì 9 Novembre, 2007Nel 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:
- Non può essere applicata a tutti gli oggetti esposti da Flash
- 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:
-
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à:
-
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.






















