2010-07-27 4 views
0

Question: Qu'est-ce que l'avers de var animaux: Animaux = new Pets(); ??Effacer la classe (nouveau ClassName())

Script:

package { 

    import flash.events.MouseEvent; 

    public class Pets { 

    public function Pets() { 
     // constructor code 
     my_btn.addEventListener(MouseEvent.CLICK, onClick) 
    } 

    private function onClick(e:MouseEvent) { 
     trace(Start); 
    } 
    } 
} 

Problème: quand j'appelle Animaux classe d'une autre classe (nouveaux animaux de compagnie()); , Il est géré de la classe et le travail addEventListener bien MAIS:

Première: résultat trace

Début

Deuxième temps: résultat trace

Démarrer
Démarrer

Troisième temps: résultat trace

Début
Début
Début

En plus ....

Merci une lotttt

+0

Je ne vois rien de mal avec le code que vous avez posté, peut-être le problème réside dans le code que vous n'avez pas posté? En fait, je vois quelques problèmes mineurs: Vous avez besoin d'un point-virgule après votre ligne addEventListener, et Start devrait être entre guillemets dans votre instruction trace, mais je ne pense pas que cela cause nécessairement votre problème. –

Répondre

2

En supposant my_btn est une instance de un bouton sur la scène, chaque fois que vous créez une nouvelle instance de Pets vous ajoutez en ajoutant un nouveau gestionnaire d'événements MouseEvent.CLICK à la même instance my_btn.

Il existe plusieurs façons de résoudre ce problème, mais cela dépend de la façon dont vous voulez que les choses fonctionnent. Si vous souhaitez uniquement qu'une instance my_btn existe, ajoutez le gestionnaire MouseEvent.CLICK en dehors de la classe Pets (et ajoutez-le uniquement une fois). Si chaque instance a besoin de son propre bouton Pets alors vous devez instancier une nouvelle instance de my_btn pour chaque instance de Pets (actuellement il semble que vous faites référence à la même instance de my_btn dans tous les cas Pets).

Questions connexes