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 3 Discussion :

Probleme de mise en forme avec Listener Keyboard


Sujet :

ActionScript 3

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 71
    Points : 83
    Points
    83
    Par défaut Probleme de mise en forme avec Listener Keyboard
    Bonjour,

    J'essaie actuellement de placer un listener sur le clavier.

    SI je place le code suivant sur une frame cela fonctionne :

    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
     
    import flash.events.KeyboardEvent;
    var left:uint = 37;
    var up:uint = 38;
    var right:uint = 39;
    var down:uint = 40;
     
    stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownListener);
     
    		function keyDownListener(e:KeyboardEvent):void {
    			trace("e.keyCode=" + e.keyCode);
    			if (e.keyCode==left) {
    				trace("left");
    			}else if (e.keyCode==right) {
    				trace("right");
    			}
     
    		}
    Mais si je crée une classe dans un fichier actionscript cela ne fonctionne plus :

    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
     
    package  {
    	import flash.display.MovieClip;
    	import flash.events.*;
     
    	public class Game extends MovieClip {
     
    		static const RIGHT = 39;
    		static const LEFT = 37;
     
     
    		public function Game() {
     
    			stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownListener);
    		}
     
     
    		function keyDownListener(e:KeyboardEvent):void {
    			trace("e.keyCode=" + e.keyCode);
    			if (e.keyCode==LEFT) {
    				trace("left");
    				//ship_mc.nextrotation=ship_mc.rotation-5;
    			}else if (e.keyCode==RIGHT) {
    				trace("right");
    				//ship_mc.nextrotation=ship_mc.rotation+5;
    			}
    		}
    	}	
    }
    L'erreur provient de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownListener);
    Et affiche : TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.

    J'en déduis donc que je n'arrive pas à atteindre stage !

    J'ai loupé un truc dans mon code ?

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Points : 494
    Points
    494
    Par défaut
    T'a loopé que tant que l'objet est pas sur le stage il a la propriété stage à null ^^

    Donc ton event d'ajout sur le stage , met le dans un autre event :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function Game(){
    addEventListener(Event.ADDED_TO_STAGE,init);
    }
     
    private function init():void{
    removeEventListener(Event.ADDED_TO_STAGE,init);
    stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownListener);
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 71
    Points : 83
    Points
    83
    Par défaut
    Legere correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function Game(){
      		 addEventListener(Event.ADDED_TO_STAGE, init);
          }
     
    		private function init(event:Event):void {
             removeEventListener(Event.ADDED_TO_STAGE, init);
             stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownListener);
          }
    Et maintenant ca marche nickel !

    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2010, 11h13
  2. probleme de mise en forme avec le JEditorPane
    Par amateurc dans le forum Composants
    Réponses: 2
    Dernier message: 09/08/2009, 23h27
  3. Probleme de mise en forme avec DIV et CSS
    Par freesurfer dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/02/2007, 15h26
  4. [Librairies] fichier cvs; problème de mise en forme
    Par illegalsene dans le forum CVS
    Réponses: 3
    Dernier message: 19/10/2005, 15h35
  5. Mise en forme avec Netscape et Mozilla
    Par seb30 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/10/2004, 10h18

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