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