我在解决如何区分键盘上的 Return 键和位于数字键盘上的 Enter 键时遇到了一些麻烦。
通过使用以下方法,我成功地将其他键与重复项分离,例如 CTRL , ALT 和 Shift :
if(e.keyLocation == KeyLocation.RIGHT) // is on right side of keyboard
or
if(e.keyLocation == KeyLocation.LEFT) // is on left side of keyboard
然而,在尝试类似的事情时,使用以下方法从我的 Return 键中分离我的 Enter 键:
if(e.keyLocation == KeyLocation.NUM_PAD)
Flash坚持将它们视为来自KeyLocation.Standard
,同样值得一提的是,Flash将两个键视为完全相同的键,并以相同的方式使用完全相同的keyCode
(13)那个 CTRL , ALT 和 Shift 共享相同的keyCode
但仍然无法被KeyLocation
隔离他们可以。
有没有人对如何解决这个问题有任何想法?或者这仅仅是AS3的限制?感谢。
编辑:值得一提的是,我正在开发此功能,以便与Adobe AIR一起用作桌面应用程序。
答案 0 :(得分:1)
很抱歉,这似乎不太可能。 在为自己尝试之后,numpad_enter总是返回KeyLocation = 0(因此它是标准的,而不是左,右或小键盘)并返回键码13,即返回键的键码。
Keyboard.NUMPAD_ENTER被定义为108,但是当你按下numpad_enter按钮时,它永远不会被flash内部发送,它只会发送带有正常输入按钮值的KeyboardEvent。
您可以尝试要求Adobe修复此Adobe HelpCenter
答案 1 :(得分:0)
也许,您是否尝试使用独立的FlashPlayer? 您应该尝试使用浏览器。
它可以与KeyLocation.NUM_PAD
分开。
答案 2 :(得分:0)
我已经确认在mac上,AIR运行时不区分RETURN和numpad ENTER键。它们产生相同的输出,所以我们搞砸了。一个相当不幸的疏忽,但现在使用小型笔记本电脑,无论如何都不会看到两个键。