2010-11-16 48 views
0

est-il possible de marquer les paramètres comme privés, uniquement accessibles/utiles pour la classe qui possède la fonction?ActionScript - Paramètres privés?

exemple:

//PRIVATE CLASS (.SWC) 
public function set AutoBounce(value:Boolean):void 
    { 
    if (value) 
     addEventListener(MouseEvent.CLICK, bounce); 
     else 
     removeEventListener(MouseEvent.CLICK, bounce); 
    } 

public function bounce():void //incorrect signature 
    { 
    //bounce ball 
    } 

la signature de la méthode ci-dessus rebond() est incorrect. pour faciliter les auditeurs d'événement, il doit être public function bounce(evt:MouseEvent):void. Cependant, je ne veux pas que l'utilisateur de la classe doive fournir ce paramètre lors de l'appel de la fonction bounce(). par conséquent, si je pouvais marquer le paramètre evt: MouseEvent comme privé ou caché de la classe appelante, cela résoudrait le problème.

actuellement, je suis redirigeant simplement l'écouteur d'événement à une fonction de transfert:

//PRIVATE CLASS (.SWC) 
public function set AutoBounce(value:Boolean):void 
    { 
    if (value) 
     addEventListener(MouseEvent.CLICK, forwardBounce); 
     else 
     removeEventListener(MouseEvent.CLICK, forwardBounce); 
    } 

private function forwardBounce(evt:MouseEvent):void 
    { 
    bounce(); 
    } 

public function bounce():void 
    { 
    //bounce ball 
    } 

plutôt que de rediriger, est-il une meilleure façon de traiter cette question? peut-être que «meilleur moyen» est un mauvais choix de mots. existe-t-il un moyen de refactoriser ce code sans utiliser de fonction de transfert ou d'obliger l'utilisateur à inclure le paramètre event.

Répondre

1

Vous pourriez dire si vous voulez être en mesure d'appeler bounce sans MouseEvent nécessaire:

public function bounce(evt:MouseEvent=null):void 
{ 
    //... 
} 

Pour votre information, le rebond n'a pas besoin d'être public ... il peut aussi être une fonction privée . Malheureusement, AS3 ne supporte pas la surcharge.

+0

qui fonctionnerait pour le refactoring. cependant, cette approche permet à l'utilisateur de fournir cette fonction publique avec un MouseEvent qu'ils verraient avec l'indication de code (ce qui ne ferait rien et semblerait confus). – TheDarkIn1978

+0

bounce() est public. l'utilisateur peut l'appeler. ils peuvent également, en option, basculer une propriété autoBounce qui appelait ou non automatiquement bounce() pour eux. – TheDarkIn1978

+0

True. Je dois dire que votre méthode actuelle serait la meilleure. –