我正在使用ActionScript 3和MXML实现的Flex 3应用程序,该应用程序包含嵌入式视频播放器,本质上是一个黑盒子 - 我将它作为SWF来自其他站点的需求,我无法访问其源代码。但是,它确实继承了Sprite。Flex 3:防止键盘事件到达Sprite
问题是,当焦点放在Flash应用程序上时,即使播放器本身没有焦点,视频播放器也会以某种方式接收和处理键盘事件。因此,当用户在GUI中的其他地方输入文本时,如果他们点击空格键,视频会暂停。
我试着拦截Sprite的父项中的关键事件,并在Sprite中设置tabEnabled = false,tabChildren = false和buttonMode = false,但似乎没有任何效果。就好像Sprite通过备用Event路径获取击键一样。
有没有人有任何关于如何防止播放器完全接收键盘事件或输入事件的想法?如果没有输入事件到达播放器,对我来说没问题,因为我已经实现了自己的独立视频控制。
By *“尝试拦截Sprite的父项中的关键事件”*,您的意思是使用[useCapture]的事件侦听器(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/ events/EventDispatcher.html#addEventListener())设置为true? – merv 2012-02-09 19:13:11
在黑暗中拍摄并可能无法解决它,但至少尝试另一件事,'yourPlayer.focusRect = false;' – ToddBFisher 2012-02-09 19:38:59
关于@ wvxvw的评论如果是这种情况,您可以停止事件的传播通过为keyUp添加监听器,然后调用event.stopImmediatePropagation()来停止事件冒泡到舞台(您需要在所有输入上执行此操作,这显然不理想,但可能会起作用)。您也可以尝试在舞台上为最高优先级的keyUp设置监听器,并希望在播放器注册之前调用监听器,然后遵循相同的停止传播方法。 – shaunhusain 2012-02-09 19:57:35