【问题标题】:Convert key code to string in Actionscript 3在 Actionscript 3 中将键码转换为字符串
【发布时间】:2013-11-02 06:30:35
【问题描述】:

我正在使用 Adob​​e 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)?

【问题讨论】:

  • 尝试:trace( String.fromCharCode(Keyboard.D)),但在UP的情况下是没用的
  • 这真的很有用,谢谢。但是我能做些什么来获取诸如UPSHIFT 之类的密钥吗?

标签: actionscript-3 flash actionscript air keyboard


【解决方案1】:

您可以使用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

【讨论】:

  • 太棒了。我被这段代码迷住了。谢谢你!我知道那是 5 年前的事了,但仍然如此。
【解决方案2】:

如果您使用带有 Haxe 的 OpenFL,您可以转到 openfl/ui 中的 Keyboard.hx 并在文件内容的文本编辑器(如 Vim 或 Gedit)中使用正则表达式来生成字符串字典的 keyCode。

使用它来创建一个开关:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2017-12-24
    • 2011-06-23
    • 2017-08-03
    • 2019-08-11
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多