2010-03-15 2 views
0

Je ne sais pas pourquoi mais j'ai de la difficulté à organiser mon événement.Flash: Est-ce que je ne comprends absolument pas l'écoute d'événements?

Prenez ceci par exemple.

someClass():Void{ 

    this.addEventListener("onChange",someObj); 

} 

Ai-je raison de supposer cela signifie que someClass écoute pour un événement onChange et quand il l'obtient, il est alors va tirer la méthode onChange sur unObj?

Merci, Kohan.

Addendum:

lo = new Object(); 
lo.click = function(evt){ 
    trace(evt.target.label + " clicked"); 
} 
button1.addEventListener("click", lo); 

Espérons que d'ici que j'ai trouvé sur ce site: http://www.webwasp.co.uk/tutorials/keywords/addEventListener.php

Vous pouvez voir comment je suis arrivé à cette hypothèse. lo est un objet, pas une méthode, ai-je raison?

+0

Quelle version Flash ciblez-vous et quelle IDE Flash utilisez-vous? – Jason

+0

Utilisation de la publication CS4 à la version 6. J'utilise Flash Develop pour mon IDE. – 4imble

Répondre

2

vous l'avez mal:

someClass():Void { 
    this.addEventListener("onChange",someObj); 
} 

ajoutera un écouteur d'événement à cette liste est onChange auditeurs, qui - quand l'événement est déclenché - appellera la méthode unObj !

Vous devez transmettre la méthode elle-même en tant que paramètre. Alors, utilisez:

someClass():Void { 
    this.addEventListener("onChange",someObj.someMethod); 
} 

* BTW, il est préférable de ne pas utiliser la chaîne « onChange » lui-même, mais plutôt d'utiliser des constantes (telles que Event .ENTER_FRAME) qui maintiennent ces chaînes.

0

Le deuxième paramètre pour addEventListener est le nom de la fonction qui sera appelée lorsque cet événement est intercepté.

+0

Je pensais que c'était censé être un objet? – 4imble

+0

Comme ici: http://www.webwasp.co.uk/tutorials/keywords/addEventListener.php – 4imble

+0

Vous pouvez définir cela comme un objet avec une méthode onChange définie. Mais cela semble être l'ancienne pratique/convention. – Jason

0

Je pense que vous comprenez mal ce qu'un êtes objet est, le nameing reflète ce que la syntaxe signifie:

someMethod():Void { 
    this.addEventListener("onChange",someOtherMethod); 
} 

someOtherMethod():Void { 
    // something happens here when the "onChange" event is triggered 
} 

la syntaxe est this.addEventListener (nom de l'événement, la fonction qui est appelée) ;

obj = new Object(); 

obj.method = function(evt) { 
    // something happened 
} 

otherObject.addEventListener("Event Name", this.obj); 

otherObject.dispatchEvent("Event Name") 

Ainsi fonctionne la syntaxe. Mais créer vos propres événements est un peu plus complexe

+0

J'ai ajouté un exemple. Est-ce que ce n'est pas un objet? – 4imble

+0

deuxième exemple oui. D'abord non, parce que vous avez '(): Void' – Ross

+0

Donc aurais-je été correct dans mon hypothèse si elle n'avait pas(): Void? – 4imble

Questions connexes