[POO] Addproperty
Écrit par Mama | 16-08-2002

addProperty

addProperty est une méthode de l'objet Object, elle peut donc s'appliquer à tous les objets qui héritent de Object en particulier l'objet movieClip.
addProperty permet d'ajouter une propriété getter/setter à un objet. Cela signifie que lorsqu'on lit cette propriété (get), une fonction se déclenche
et lorsqu'on modifie (set) cette propriété, une autre fonction se déclenche. addProperty recoit le nom de la propriété (sous forme de String) en premier paramètre,
le nom de la fonction get en deuxième paramètre et le nom de la fonction set en troisième.

Ici on veut ajouter à toutes les instances de movieClip la propriété _depth pour cela on ajoute cette propriété au prototype de la classe MovieClip.
De ce fait toutes les instances en héritent. (voir AS_POO)

getDepth

La nouvelle méthode getDepth permet d'obtenir la profondeur d'un clip. On l'utilise simplement en la faisant préceder du clip cible:

monClip.getDepth();

Création d'une nouvelle propriété _depth

Pour obtenir laprofondeur d'un clip en lisant la valeur de la propriété _depth, il nous suffit d'assigner la méthode getDepth comme fonction "getter". Ainsi en lisant la propriété _depth la fonction getDepth s'execute et renvoie la valeur de profondeur.

Quand la propriété _depth est modifiée, on assigne la fonction swapDepth comme fonction "setter", c'est donc la méthode swapDepths qui s'execute et qui place le clip à la profondeur _depth, valeur de profondeur transmise automatiquement à swapDepths.

Il nous suffit donc simplement pour créer la propriété _depth d'écrire:

movieClip.prototype.addProperty("_depth",this.getDepth,this.swapDepths);

Cas d'application et TextField.onChanged

Dans l'exemple ci dessous, on utilise le gestionnaire d'évènement dynamique onChanged de l'objet TextField pour modifier la propriété _depth.
Quand une instance de l'objet Textfield (ici sur la scène, un champ texte de saisie) est modifiée, l'évenement onChanged se déclenche.
Plus exactement c'est la fonction de retour (callback) assignée au gestionnaire onChanged de l'instance de l'objet Textfield qui s'execute.

// Création des deux fonctions de retour attachées aux instances txtClip1 et txtClip2
txtClip1.onChanged = function() {
// attribue la valeur de l'objet txtClip1 (txtClip1.text) à la propriété _depth de l'instance mcClip1
mcClip1._depth=Number(txtClip1.text);
}

txtClip2.onChanged = function() {
// attribue la valeur de l'objet txtClip2 (txtClip2.text) à la propriété _depth de l'instance mcClip2
mcClip2._depth=Number(txtClip2.text);
}

 
Dernière mise à jour : 12-09-2006