Flex - 虚拟删除按钮

时间:2013-06-11 10:00:47

标签: flex

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

这就是我所拥有的:

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

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

甚至可以在flex中执行此操作,还是必须使用操作脚本?

1 个答案:

答案 0 :(得分:2)

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

我的建议是你应该在舞台上听键盘事件,然后检查删除键是否被击中。

同时检查adobe文档 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/KeyboardEvent.html#includeExamplesSummary

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);
        }


    }
}