Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何为给定的文本字符串创建正确的KeyboardEvent对象?_Apache Flex_Actionscript_Keyboard Events - Fatal编程技术网

Apache flex 如何为给定的文本字符串创建正确的KeyboardEvent对象?

Apache flex 如何为给定的文本字符串创建正确的KeyboardEvent对象?,apache-flex,actionscript,keyboard-events,Apache Flex,Actionscript,Keyboard Events,我想通过手动分派对象来模拟一些键盘输入。创建此类事件需要传递密钥代码 唉,我只有一个给定的字符串 const text: String = "Hello"; 我可以很容易地得到字符代码使用,但我如何才能得到关键代码?对于任何给定的字符(例如:“H”),可能只有一个键代码、一个键代码加上一些修饰符(在本例中:Shift+keycode\u of_H)甚至多个键代码。是否有可能获得给定字符代码的键代码(可能通过考虑用户的键盘映射)?这并不太难,但只需要一点时间即可设置 首先创建一个字典或对象,将U

我想通过手动分派对象来模拟一些键盘输入。创建此类事件需要传递密钥代码

唉,我只有一个给定的字符串

const text: String = "Hello";

我可以很容易地得到字符代码使用,但我如何才能得到关键代码?对于任何给定的字符(例如:“H”),可能只有一个键代码、一个键代码加上一些修饰符(在本例中:Shift+keycode\u of_H)甚至多个键代码。是否有可能获得给定字符代码的键代码(可能通过考虑用户的键盘映射)?

这并不太难,但只需要一点时间即可设置

首先创建一个字典或对象,将UTF-8值映射到键值,如下所示:

var keyCodes:Dictionary = new Dictionary();
keyCodes[49] = Keyboard.NUMBER_1; //1
// add the rest of the mappings... 
public function charCodeToKeyboardEvent(charCode:int):KeyboardEvent{
    var event:KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_UP);
    event.charCode = charCode;
    if(keyCodes[charCode]){
        event.keyCode = keyCodes[charCode];
    } else if (shiftedKeyCodes[charCode]){
        event.keyCode = shiftedKeyCodes[charCode];
        event.shiftKey = true;
    } else {
        return null;
    }
    return event;
}
然后,因为您需要指定SHIFT

var shiftedKeyCodes:Dictionary = new Dictionary();
shiftedKeyCodes[33] = Keyboard.NUMBER_1; //!
// add the rest of the shifted mappings
然后创建如下实用程序函数:

var keyCodes:Dictionary = new Dictionary();
keyCodes[49] = Keyboard.NUMBER_1; //1
// add the rest of the mappings... 
public function charCodeToKeyboardEvent(charCode:int):KeyboardEvent{
    var event:KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_UP);
    event.charCode = charCode;
    if(keyCodes[charCode]){
        event.keyCode = keyCodes[charCode];
    } else if (shiftedKeyCodes[charCode]){
        event.keyCode = shiftedKeyCodes[charCode];
        event.shiftKey = true;
    } else {
        return null;
    }
    return event;
}
然后在字符串中循环并执行以下操作:

for(var i:int = 0; i < myString.length; i++){
    dispatchEvent(charCodeToKeyboardEvent(myString.charCodeAt(i)));
}
for(变量i:int=0;i

编辑:我更新了它以使用键盘类上的常量,这样它就可以独立于设备或操作系统工作。

事实证明,我一开始并不需要100%正确的键盘事件。相反,我遗漏了两件事:

  • 需要为纯文本(如“Hello”)输入发送一个
  • 需要将事件发送到嵌入式编辑控件,可以使用
    textDisplay
    属性访问该控件

  • 好的,但是如何创建映射呢?它们是否取决于键盘布局,即相同的物理键可能会根据键盘布局产生不同的字符代码?字符代码值是英文键盘值。例如,如果按Shift+3,charCode在日文键盘上,就像在英文键盘上一样。让我补充一下,我没有尝试过,但我之前的评论是adobe文档中关于它的引用,但我如何才能获得映射的关键代码?根据键盘布局,给定字符(例如:“#”)可以具有不同的键代码(即不同的物理键)。字符代码是英文键盘值,但是键代码呢?你是否在空中运行你的项目?模拟键盘输入的目的是什么?谁是这些事件的接受者?这些字符串是如何生成的?也许您必须使用本机扩展,也许您可以使用
    TextEvent
    而不是
    KeyboardEvent
    @user1875642:我在Flash播放器(11.2及更新版本)中运行代码,而不是在空中运行。事件的接收是一个控件。我们的目标是为Flex提供某种宏回放工具。谢谢你提到TextEvent,我会看一看的。很高兴你找到了另一种方法,至少!!