IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

handler listener ou ecouteur


Sujet :

Flash

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut handler listener ou ecouteur
    hello les gens voila j'ai remarqué un truc assez bizzar en AS2 : l'appel d'une methode au sein d'un listener ne passe pas!!! Je m'explique un peu plus clairement:
    j'ai une classe (classe Voyou) avec deux methodes, appelons les "casser" et "voler" (je me decouvre des dons de pedagogie )pour voler un voyou attends un evenement (touche enter par exemple) d'ou le listener et en volant (au sein de la methode voler) le voyou a besoin de "casser". Donc en somme on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function voler():Void {
    		var listener:Object;
    		listener = new Object();
    		listener.onKeyDown = function() {
    		if (Key.isDown(Key.ENTER)) {
    		trace('appel methode casser');//la console affiche le message
                              this.casser(); //mais cet appel ne passe pas!!!
    		}
    }
    }
    c'est pas un bug ça messieur adobe??? j'aimerai maintenant savoir comment y remedier

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    Bonjour a tous,

    Je pense que ton probleme vien de ton ciblage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listener.onKeyDown = function() {
    	if (Key.isDown(Key.ENTER)) {
    	trace('appel methode casser');//la console affiche le message
    	this.casser(); //mais cet appel ne passe pas!!!
    }
    Dans ce code, this represente l'object listener, or l'objet listener ne posede pas de methode nommé casser. Donc aucune fonction n'est executé.

    Il faut donc rectiver le ciblage.

    Peut etre qu'en procedant ainssi cela resoudrai ton probleme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function voler():Void {
    	var thisClass:Voyou=this;
    	var listener:Object;
    	listener = new Object();
    	listener.onKeyDown = function() {
    		if (Key.isDown(Key.ENTER)) {
    			trace('appel methode casser');//la console affiche le message
    			thisClass.casser(); 
    		}
    	}
    }
    Dans ce code, thisClass est un pointeur de class voyou instancier.

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    c'etait exactement ça je te remerci bcp 'tain je croyais m'etre débarassé des pointeurs

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    Bonjour, je me permet de poser une question sur le code posté au début comme le suivant d ailleurs cela ne change rien:
    le listener étant déclaré dans la fonction voler, celui ci devrait être détruit à la fin de la fonction...donc très rapidement.
    En terme de syntaxe, l avantage du listener n est il pas de pouvoir gérer les évènements justement en dehors de toute fonction?
    Merci

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    d ailleurs cela ne change rien:
    relis bien les deux codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le listener étant déclaré dans la fonction voler, celui ci devrait être détruit à la fin de la fonction...donc très rapidement.
    et alors???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    l avantage du listener n est il pas de pouvoir gérer les évènements justement en dehors de toute fonction?
    mouais ùais comment fait-on lorsque 'lon veut programmer O.O. ?

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    j ai rien compris...

  7. #7
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    le listener étant déclaré dans la fonction voler, celui ci devrait être détruit à la fin de la fonction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function voler():Void {
    	var listener:Object;
    	listener = new Object();
    	listener.onKeyDown = function() {
    		// ACTION
    	}
    }
    La variable listener est efectivement déclaré dans la methode voler. Sa porté est donc réduite à cette méthode.
    Cette variable est en réalité un pointeur qui pointe l'éspace mémoire "contenant" l'objet.
    new Object() crée cette espace mémoire, cette object. Mais cette object ne peut être modifier que via le pointeur listener.
    Dans notre cas, nous souhaitons juste définir l'evenement, la fonction onKeyDown
    Au finale( a la sortie de cette methode), nous nous retrouvons avec un nouvelle object dans notre mémoire (on ne peu plus le modifier car plus de pointeur) mais la fonction definie existe toujours.

    l avantage du listener n est il pas de pouvoir gérer les évènements justement en dehors de toute fonction?


    Pour ce qui est de l'appel a cette fonction(onKeyDown), je ne sais pas exactement comment le playeur flash le fait. On peu s'imaginer qu'il a un tableau de pointeur de fonction pour l'evenement onKeyDown. Puis a chaque fois qu'une touche de clavier est enfoncé, il distribut l'evenement aux differente fonction.

    jadey, que ce passe t'il si tu appel 2 foi cette methode; et que l'on enfonce 1 fois la touche du clavier ? ( la methode casser est elle appellé deux foi ? )

    -------------

    Le but de la methode voler est de créer un écouteur. Personnelement je l'aurrais créer dans la fonction constructeur mais bon, la questio n'était pas là.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/04/2010, 17h47
  2. Listener sur un JPanel
    Par ptitelfe dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 27/03/2004, 13h14
  3. [C#] suppression handler sur ImageButton
    Par jld33 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/01/2004, 09h50
  4. TNS:listener could not resolve SERVICE_NAME given in connect
    Par Sinclair dans le forum Administration
    Réponses: 15
    Dernier message: 20/08/2003, 17h26
  5. DoubleClick Listener & ENTER
    Par Pro_Fete dans le forum Composants
    Réponses: 4
    Dernier message: 27/01/2003, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo