我正在使用 Adobe AIR 3.4 for Desktop 运行时在 Flash CS6 中使用 Actionscript 3。
我将某些键码定义为整数值(下面的示例返回 38 表示 UP,68 表示 D)
var KEY_UP:uint = Keyboard.UP;
var KEY_D:uint = Keybaord.D;
但是,我需要向用户显示键的键(显然不能显示整数值)。
如何将这些键盘值转换为字符串值,例如“Up”或“D”(而不是 38 和 68)?
我正在使用 Adobe AIR 3.4 for Desktop 运行时在 Flash CS6 中使用 Actionscript 3。
我将某些键码定义为整数值(下面的示例返回 38 表示 UP,68 表示 D)
var KEY_UP:uint = Keyboard.UP;
var KEY_D:uint = Keybaord.D;
但是,我需要向用户显示键的键(显然不能显示整数值)。
如何将这些键盘值转换为字符串值,例如“Up”或“D”(而不是 38 和 68)?
您可以使用 获取属性名称describeType
,并以字符串形式访问属性,例如Keyboard["UP"]
.
因此,您可以创建表。例如
import flash.utils.describeType;
function getKeyboardDict():Dictionary {
var keyDescription:XML = describeType(Keyboard);
var keyNames:XMLList = keyDescription..constant.@name;
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
如果您将 OpenFL 与 Haxe 一起使用,您可以进入并Keyboard.hx
在openfl/ui
文本编辑器(如 Vim 或 Gedit)中对文件内容使用正则表达式,以生成字符串字典的 keyCode。
使用它来创建一个开关:
:%s/\([A-Z_0-9]*\)\ =\ \([0-9]*\)/case \2\: return "\1"/g