我正在尝试在我的应用程序中实现查找功能,为此我尝试打开基于键盘输入的查找弹出窗口,如F3或CTRL + F.但是在F3上,它不会转到事件监听器,而是打开默认查找Internet Explorer的工具栏。任何线索,我如何绕过它并在我的应用程序中使用f3?
另一件事是如何在flex中捕获CTRL + F?
private function keyPressed(evt:KeyboardEvent):void
{
if (evt.keyCode == Keyboard.F3)
{
//open popup
} else {
//do something elese
}
}
感谢。
答案 0 :(得分:3)
用于检测CTRL + F:
event.ctrlKey == true && event.keyCode == Keyboard.F
其中'event'当然是KeyBoardEvent。
至于F3问题:只要Flash应用程序具有焦点,您编写的代码就会起作用。然后,F3键命令也不会路由到浏览器。所以你需要做的是确保你的应用程序在用户点击F3时具有焦点。您如何解决这个问题取决于您的JavaScript实现。 您可以使用ExternalInterface告诉浏览器应用程序已准备就绪,而不是专注于应用程序。或者在Javascript中,您可以捕获键盘事件,阻止其默认行为,然后在Flash应用程序上调用该函数(再次通过ExternalInterface)。
为了帮助您入门,这是一个用于防止默认F3行为的小JQuery代码段:
$('body').keyup(function(event) {
if (event.keyCode == '114') event.preventDefault();
}
答案 1 :(得分:1)
这是对你的第二个问题的回应,顺便说一下,这个问题应该在一个完全独立的问题中提出。
此解决方案允许您根据需要测试任意数量的组合键。它将按下的键存储在一个数组中,并再次测试该数组以确定组合。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class MultiKeyHandlerApp extends Sprite
{
protected var keyCodes:Array;
public function MultiKeyHandlerApp()
{
keyCodes = [];
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler );
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler );
}
protected function onKeyDownHandler( event:KeyboardEvent ):void
{
addKey( event.keyCode );
// -- 65 = a, 83 = s, 68 = d
if( hasKey( 65 ) && hasKey( 83 ) && hasKey( 68 ) )
{
trace( "match!" );
}
}
protected function onKeyUpHandler( event:KeyboardEvent ):void
{
removeKey( event.keyCode );
}
protected function addKey( keyCode:int ):void
{
if( keyCodes.indexOf( keyCode ) < 0 ) keyCodes.push( keyCode );
}
protected function removeKey( keyCode:int ):void
{
var index:int = keyCodes.indexOf( keyCode );
if( index > -1 ) keyCodes.splice( index, 1 );
}
protected function hasKey( keyCode:int ):Boolean
{
return keyCodes.indexOf( keyCode ) >= 0;
}
}
}
答案 2 :(得分:0)
只需检查所有浏览器(所有浏览器都是最新的)。使用10.3闪存播放器。
一切正在Chrome / FireFox / Opera上运行。你需要做的主要是确保你专注于flash电影(swf),而不是浏览器(HTML)或其他一些。
由于IE正在使用ActiveX技术,它首先捕获所有的Function键事件,然后将其解析为Flash。
野生动物园也是如此。
但你可以在所有浏览器上使用F2,F8和F9。
获得ctrl / alt / shift的组合。
KeyboardEvent有一些不错的属性: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/KeyboardEvent.html#propertySummary