2013-11-02 45 views
2

我在Flash CS6中使用ActionScript 3 for Desktop运行时使用Actionscript 3。将关键代码转换为Actionscript中的字符串3

我有(下面示例返回d 38为UP和68)

var KEY_UP:uint = Keyboard.UP; 
var KEY_D:uint = Keybaord.D; 

然而,我需要显示的钥匙的钥匙用户(定义为整数值的某些关键码和显然不能显示整数值)。

如何将这些键盘值转换为字符串值,如“Up”或“D”(而不是38和68)?

+1

尝试:'跟踪(使用String.fromCharCode(Keyboard.D))',但在'UP'情况下,它是无用 – Cherniv

+0

这是真正有用的,谢谢。但是有什么我可以做的,以获得像'UP'或'SHIFT'这样的密钥? –

回答

7

您可以通过describeType获取房产名称,并以字符串形式访问房产,如Keyboard["UP"]

所以,你可以创建表。例如

import flash.utils.describeType; 

function getKeyboardDict():Dictionary { 
    var keyDescription:XML = describeType(Keyboard); 
    var keyNames:XMLList = [email protected]; 

    var keyboardDict:Dictionary = new Dictionary(); 

    var len:int = keyNames.length(); 
    for(var i:int = 0; i < len; i++) { 
     keyboardDict[Keyboard[keyNames[i]]] = keyNames[i]; 
    } 

    return keyboardDict; 
} 

var keyDict:Dictionary = getKeyboardDict(); 

trace(keyDict[Keyboard.UP]); //UP 
trace(keyDict[Keyboard.SHIFT]); //SHIFT 
+1

谢谢,这个作品完美 –

+0

辉煌。我被这段代码迷住了。感谢你!我知道这是5年前,但仍然。 –

0

如果使用OpenFL与haXe的,你可以去Keyboard.hxopenfl/ui并在文件的内容在文本编辑器使用正则表达式(如Vim的或Gedit的)来生成键码字符串字典。

使用此创建一个开关:

:%s/\([A-Z_0-9]*\)\ =\ \([0-9]*\)/case \2\: return "\1"/g 
相关问题