Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
class - KeyDetection!
/** @author Michael Avila @version 2.0 by rafael barros/class KeyDetection{ private var keys_pressed : Array; private var key_combinations : Array; private var listeners : Array; / Construtor da classe - estado inicial / public function KeyDetection () { keys_pressed = new Array (); key_combinations = new Array (); listeners = new Array (); // allow this object to listen for events from the key object Key.addListener (this); } public function addListener (listener : Object) : Void { for (var i : Number = 0; i < listeners.length; i ++) { if (listeners [i] == listener) return; } listeners.push (listener); } public function removeListener (listener : Object) : Void { for (var i : Number = 0; i < listeners.length; i ++) { if (listeners [i] == listener) listeners.splice (i, 1); } } public function addCombination (name : String, keyCode1 : Number, keyCode2 : Number) : Void { key_combinations.push (arguments); } private function invokeOnKeyCombination (combo_name : String ) : Void { for (var i : Number = 0; i < listeners.length; i ++) { listeners [i].onKeyCombination (combo_name); } } private function onKeyDown () { var key : Number = Key.getCode (); cleanKeysPressed (); if (key != keys_pressed [keys_pressed.length - 1]) { keys_pressed.push (key); } checkCombinations (); } private function checkCombinations () { for (var j : Number = 0; j < key_combinations.length; j ++) { for (var i : Number = 0; i < keys_pressed.length; i ++) { if (keys_pressed [i] == key_combinations [j][i + 1]) { if (i == key_combinations [j].length - 2) { invokeOnKeyCombination (key_combinations [j][0]); return; } } else { break; } } } } private function cleanKeysPressed () { for (var i : Number = 0; i < keys_pressed.length; i ++) { if ( ! Key.isDown (keys_pressed [i])) { keys_pressed.splice (i, (keys_pressed.length - i)); } } }}
Modos de usar
var combo_kd:KeyDetection = new KeyDetection();combo_kd.addCombination("shift_s", Key.SHIFT, 83);var listener_obj:Object = new Object();listener_obj.onKeyCombination = function(name:String){ trace("Combinação ok!");}combo_kd.addListener(listener_obj);
var combo_kd:KeyDetection = new KeyDetection();combo_kd.addCombination("shift_s", Key.SHIFT, 83);//added combocombo_kd.addCombination("shift_z", Key.SHIFT, 90);var listener_obj:Object = new Object();listener_obj.onKeyCombination = function(name:String){ switch (name) { case "shift_s": trace("Shift S combinação detectada!"); break; case "shift_z": trace("Shift Z combinação detectada!"); break; }}combo_kd.addListener(listener_obj);Carregando comentários...