2011-05-23 2 views

Répondre

2

En général, c'est une mauvaise idée.

Si vous voulez que le bouton de la souris pour effectuer la même opération que la clé, vous devez factoriser le code à une méthode partagée:

function doSomething(){ 
    // ... 
} 

function mouseClick(){ 
    doSomething(); 
} 

function keyPress(){ 
    doSomething(); 
} 
+0

Pourquoi est-ce une mauvaise idée? Je n'utiliserai ce bouton qu'une seule fois. C'est juste une alternative pour la touche fléchée. –

+0

@ Kudla69 C'est un concept horrible. Votre action dépend essentiellement de l'entrée de la souris, alors votre entrée de souris dépend de votre entrée de touche. Vos actions doivent être indépendantes de l'entrée. Si elles nécessitent des informations sur l'entrée, vous devez transmettre les données de manière à ce qu'elles soient indépendantes. – AnteSim

1

Si vous avez configuré votre gestion combinaison de touches semblable à moi il devrait être facile ..

Je fondamentalement juste une classe ont avec un tableau qui a un indice donné la valeur true/false sur la base keyCode de la touche pressée/sortie ..

une ventilation de ceci:

Lorsque j'appuie sur "a" qui a une valeur ASCII ou keyCode de 65, alors array[65] est réglé sur true. Lorsque je relâche la touche "a", array[65] est défini sur false.

Ensuite, j'ai juste une fonction qui renvoie un booléen qui représente une touche maintenue enfoncée. Voici un exemple rapide de cette classe:

package 
{ 
    import flash.display.Stage; 
    import flash.events.KeyboardEvent; 

    public class Keystrokes 
    { 
     public static var keys:Array = []; 

     public static function init(stg:Stage):void 
     { 
      stg.addEventListener(KeyboardEvent.KEY_DOWN, _keyDown); 
      stg.addEventListener(KeyboardEvent.KEY_UP, _keyUp); 
     } 

     private static function _keyDown(e:KeyboardEvent):void 
     { 
      keys[e.keyCode] = true; 
     } 

     private static function _keyUp(e:KeyboardEvent):void 
     { 
      delete keys[e.keyCode]; 
     } 

     public static function keyIsDown(...ascii):Boolean 
     { 
      var i:uint; 
      for each(i in ascii) 
      { 
       if(keys[i]) return true; 
      } 

      return false; 
     } 
    } 
} 

Maintenant, avec tout ce qui dit que vous pouvez faire essentiellement:

Keystrokes.keys[keycode_for_right_arrow] = true;

Lorsque vous cliquez sur la souris, et false lorsque vous le relâchez.

Questions connexes