我正在尝试检测flex中alt键的按键事件。我有一个KeyboardEvent.KEY_DOWN和KeyboardEvent.KEY_UP的标准事件监听器,但是没有得到任何对alt键(或ctrl键)的响应。
我知道我可以检测是否通过鼠标事件按下了alt键,但我想在按下alt键时更新光标以显示它将执行与未按下时不同的动作。
我在Mac上使用Safari进行开发,所以请告诉我是否这是一个孤立的问题。
答案 0 :(得分:0)
我面前没有Flex环境,但我认为修改键(在您的情况下为Shift,Control和Option)不会发出键盘事件信号。如果我是对的,你仍然可以通过测试每个MouseEvent上的控件和alt键的状态,并根据需要更新游标状态来获得你想要的大部分内容。
它可能也可以在后台连续采样选项键的状态,但我不记得如何在没有接口事件的情况下获得键盘状态。祝你好运。
答案 1 :(得分:0)
试试这个:
component.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler, true );
component.addEventListener( KeyboardEvent.KEY_UP, keyUpHandler, true );
protected function keyDownHandler( event:KeyboardEvent ):void
{
states[ event.keyCode >>> 3 ] |= 1 << (event.keyCode & 7);
}
protected function keyUpHandler( event:KeyboardEvent ):void
{
states[ event.keyCode >>> 3 ] &= ~(1 << (event.keyCode & 7));
}
你可以检查一个键是否像这样:
public function isKeyDown( keyCode:uint ):Boolean
{
return ( states[ keyCode >>> 3 ] & (1 << (keyCode & 7)) ) != 0;
}
答案 2 :(得分:0)
正如stef所指出的,它似乎是Safari中的一个错误。
可以使用JavaScript将事件传递到Flash,但我不确定如果Flash影片有焦点,JavaScript会获取它们。
以下是如何执行此操作的一些示例: javascript to actionscript keypress passing utility?