我需要通过按CTRL+S来触发一个事件。
我试过了,但是行不通:
if(e.ctrlKey == true && e.keyCode == 81){
trace("CTRL+S")
}
怎么做呢?
这是keyCode 83为S(如果你犯了这个错误)。此外,确保在KEY_UP事件上添加侦听器。下面是一个工作示例:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:Panel title="Panel 3" width="100%" height="200" creationComplete="onCreationComplete()">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
private function onCreationComplete():void{
this.addEventListener(MouseEvent.CLICK, clickHandler);
this.addEventListener(KeyboardEvent.KEY_UP,keyPressed);
}
private function clickHandler(event:MouseEvent):void {
stage.focus = this;
}
private function keyPressed(evt:KeyboardEvent):void{
if(evt.ctrlKey && evt.keyCode == 65)
trace("CTRL A is pressed");
if(evt.ctrlKey && evt.keyCode == 66)
trace("CTRL B is pressed");
if(evt.ctrlKey && evt.keyCode == 81)
trace("CTRL S is pressed");
}
]]>
</fx:Script>
</s:Panel>
</s:WindowedApplication>
医学博士他的回答看起来很好;它展示了如何为键盘事件添加事件侦听器。
但是有一件事他没有提到:如果你在浏览器中运行这个Flash SWF, CTRL+S快捷键可能会被浏览器拦截并消耗,而Flash Player可能永远不会得到它。CTRL+S是保存页面的一个非常常见的快捷方式,所以如果您遇到浏览器焦点问题,请不要惊讶。