0

我正在尝试在 flex 应用程序中放置一个虚拟删除按钮。我希望按钮绑定到键盘上的删除键。

这就是我所拥有的:

<s:Image id="btnDelete" x="0" y="0" width="32" height="32" source="image/delete.png" useHandCursor="true" click="deleteButtonClick(event)"/>

我发现删除键的键码是 46,但找不到在函数中使用它的方法。我花了很多时间寻找答案。

甚至可以在 flex 中做到这一点,还是我必须使用动作脚本?

4

1 回答 1

2

您需要监听键盘事件而不是鼠标事件。您在那里所做的是侦听图像上的 MouseEvent.CLICK 事件,这不是它应该如何工作的。

我的建议是你应该在舞台上监听键盘事件,然后检查是否按下了删除键。

还要检查这个 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/KeyboardEvent.html#includeExamplesSummary上的 adobe 文档

http://livedocs.adobe.com/flex/3/html/help.html?content=events_11.html

请参阅此示例

package {
    import flash.display.Sprite;
    import flash.display.DisplayObject;
    import flash.events.*;

    public class KeyboardEventExample extends Sprite {
        private var child:Sprite = new Sprite();
        private var bgColor:uint = 0x00CCFF;
        private var size:uint = 80;

        public function KeyboardEventExample() {
            child.graphics.beginFill(bgColor);
            child.graphics.drawRect(0, 0, size, size);
            child.graphics.endFill();
            addChild(child);
            child.addEventListener(MouseEvent.CLICK, clickHandler);
            child.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
            child.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

        }

        private function clickHandler(event:MouseEvent):void {
            stage.focus = child;
        }

        private function keyDownHandler(event:KeyboardEvent):void {
            trace("keyDownHandler: " + event.keyCode);
            trace("ctrlKey: " + event.ctrlKey);
            trace("keyLocation: " + event.keyLocation);
            trace("shiftKey: " + event.shiftKey);
            trace("altKey: " + event.altKey);

        }

        private function keyUpHandler(event:KeyboardEvent):void {
            trace("keyUpHandler: " + event.keyCode);
        }


    }
}
于 2013-06-11T11:52:08.223 回答