2010-06-13 9 views
0

Je n'ai jamais essayé de le faire auparavant, donc ma tête a un peu nagé. je voudrais avoir un booléen public appelé permis en myClass classe personnalisée. si elle est appelée à être modifiée, comment puis-je déclencher une fonction à partir du changement?ActionScript Appeler des fonctions privées en modifiant des variables publiques?

Devrais-je ajouter un écouteur d'événement Event.CHANGE à ma variable? puis-je faire cela? ou y a-t-il une manière plus standard?

Répondre

2

Nous utilisons généralement des propriétés pour cela.
Les propriétés sont comme des variables publiques pour l'extérieur - vous pouvez définir instance.enabled = true; et ainsi de suite. Mais vous définissez les propriétés en tant que fonctions getters et/ou setters pour la classe.
Ils sont l'endroit idéal pour la logique personnalisée à exécuter sur les changements de valeur.

Par exemple:

public class CustomClass { 
    private var _enabled:Boolean = false; 

    public function set enabled(value:Boolean):void { 
     trace('CustomClass.enabled is now', value); 
     this._enabled = value; 
    } 

    public function get enabled():Boolean { 
     trace('CustomClass.enabled was retrieved'); 
     return this._enabled; 
    } 
} 

Notez qu'ils ne peuvent pas avoir le même nom que votre variable privée et vous n'avez pas besoin tous les deux définis. En fait, vous n'avez même pas besoin d'une variable pour un setter/getter. Vous pouvez les utiliser comme n'importe quelle fonction - ils vous fournissent simplement une syntaxe différente.
Par exemple:

var object:CustomClass = new CustomClass(); 
object.enabled = false; 
if (object.enabled) { 
    ... 
} 

Ils sont grands pour exposer une API simple, vous empêche de réécriture du code extérieur si les composants internes de la classe doivent changer.

AS3 Référence sur getters et setters.

+0

Ne voudrait-il pas quelque chose qui appelle une fonction sur un changement de propriété de telle sorte que lorsque l'objet est activé (dynamiquement?) Quelque chose est à l'écoute du changement? – phwd

+0

Si oui, j'ai mal compris ce qu'il voulait dire. – mrkishi

+0

bien, il est possible de faire appel à la fonction setter ou bien d'inclure du code qui gèrerait la modification en fonction de la nouvelle valeur définie. est-ce que le format de code des API AS3 est utilisé pour que nous puissions appeler des propriétés comme mySprite.alpha = 0.5, ou myTextField.enabled = true? – TheDarkIn1978

Questions connexes