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

ActionScript 1 & ActionScript 2 Discussion :

appel d'une fonction avec la touche "enter"


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Points : 160
    Points
    160
    Par défaut appel d'une fonction avec la touche "enter"
    Bonjour,

    Voilà je me heurte à un problème depuis des semaines concernant l'envoie de message chat en appuyant sur la touche "enter".

    Le code ci-dessous fonctionne parfaitement quand on clique sur le bouton "envoi" mais je souhaiterai pouvoir envoyer un message quand on clique sur la touche "enter"

    L'extrait de la fonction ci-dessous envoie un objet (la référence de la fenêtre chat) comme paramètre à la fonction "click_chatSend()" quand on appuie sur le bouton "bt_send"

    J'ai essayé de mettre un écouteur et d'envoyer un objet comme paramètre dès que la touche enter est enfoncé mais cela ne fonctionne pas. je n'arrive pas à envoyer un objet...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mc.content["bt_send"].addEventListener("click", Delegate.create(this, this.click_chatSend));



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	//envoie les messages
    	public function click_chatSend(o:Object)
    	{		
     
    		var mc:MovieClip = o.target._parent;
    		var envoi_autorise:Boolean = true;
     
     
    		if (!mc.offline && mc.message_txt.text!= "" && envoi_autorise)
    		{			
    			this._sfs.sendPrivateMessage(this._myID + TOKEN + this._myName + TOKEN + mc.message_txt.text, mc.uid);
    			mc.message_txt.text = "";
    			Selection.setFocus(mc.content["message_txt"]);
    		}		
     
    	}

    Voilà le code que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var keyListener : Object = new Object();							
    mc.content["message_txt"].keyListener = keyListener;
    keyListener.scope = this;
    mc.content["message_txt"].keyListener.onKeyDown = function()
    {
    	if(Key.isDown(Key.ENTER))
    	{
    	mc.content["message_txt"].keyListener.scope.click_chatSend(mc.content["message_txt"].text + TOKEN + uid + TOKEN + 	nick);		
    	}
    }
    Key.addListener(mc.content["message_txt"].keyListener);
    Merci pour vos pistes

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 128
    Points : 101
    Points
    101
    Par défaut
    Salut

    J'ai pas regardé en profondeur ton code mais je pense savoir d'où vient ton problème. La classe Delegate présent dans le package mx.utils.* ne permet pas de passer des objets en paramètres.
    Le langage AS étant très permissif, il ne t'indiques pas que tu as mis un paramètre de trop ou un mauvais paramètre lors de ton Delegate.
    Pour résoudre ton problème, utilise la classe suivante plutot que la classe "officielle" Delegate car elle te permet de passer des objets en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    /**
     * Delegate class
     * Permet l'insertion de paramètres aditionnels par rapport à la classe Delegate classique
     */
    class util.Delegate
    {
       /**
        * Create a delegate function
        * @param target   Objet context
        * @param handler   Method to call
        */
       public static function create(target:Object, handler:Function):Function
       {
          var func = function()
          {
             var context:Function = arguments.callee;
             var args:Array = arguments.concat(context.initArgs);
             return context.handler.apply(context.target, args);
          }
     
          // Don't use local references to avoid "Persistent activation object" bug
          // See: http://timotheegroleau.com/Flash/articles/scope_chain.htm
          func.target = target;
          func.handler = handler;
          func.initArgs = arguments.slice(2);
          return func;
       }
    }
    Remarque : Ce n'est pas moi qui est développé cette classe, je l'ai adapté par rapport à mon application. Hélas, je ne me souviens plus où j'ai récupéré celle-ci

    J'espère que ma réponse résoudra ton problème

    ciao

Discussions similaires

  1. Appel d'une fonction avec plusieurs variables
    Par midoparis dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/05/2008, 11h53
  2. appel d'une fonction avec allocation
    Par MoonSef dans le forum C
    Réponses: 9
    Dernier message: 26/02/2007, 08h24
  3. appel d'une fonction avec parametre.
    Par rollernox dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 23h07
  4. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49

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