AS3鼠标右键拖动&下降

时间:2015-12-14 22:32:51

标签: actionscript-3 flash mouseevent drag

使用Flash Player 11.2,我们现在可以使用鼠标右键访问鼠标事件:

  • MouseEvent.RIGHT_CLICK
  • MouseEvent.RIGHT_MOUSE_DOWN
  • MouseEvent.RIGHT_MOUSE_UP

然而,当我尝试使用它们实现鼠标右键拖放时,似乎一旦鼠标右键按下,我就不再获得MouseEvent.MOUSE_MOVE和舞台的MouseX和MouseY成员停止更新,直到释放按钮。这使得实际上不可能实现拖放。

使用下面Flash Builder中的代码示例来查看我的意思:

  • 启动它,移动鼠标,你会看到鼠标位置更新的日志。
  • 按住LMB,移动鼠标,你会看到更多日志,太棒了!
    • 释放LMB,按住LMB,移动鼠标,没有日志,不好!

这是AS3的限制吗?我似乎无法找到任何有关它的文档。

代码示例:

package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;

    public class TestFlash extends Sprite
    {
        public function TestFlash()
        {
            if(stage){
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, onLMBDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, onLMBUp);
            stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, onRMBDown);
            stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP, onRMBUp);
            }

        }

        private function onMouseMove(event:MouseEvent) : void
        {
            trace("Mouse Pos, from event: x = " + event.localX + " y = " + event.localY + " from stage: x = " + stage.mouseX + " y = " + stage.mouseY);
        }

        private function onRMBDown(event:MouseEvent) : void
        {
            trace("RMB down");
        }

        private function onRMBUp(event:MouseEvent) : void
        {
            trace("RMB up");
        }

        private function onLMBDown(event:MouseEvent) : void
        {
            trace("LMB down");
        }

        private function onLMBUp(event:MouseEvent) : void
        {
            trace("LMB up");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

根据您所描述的问题判断,我认为您需要添加输入框架功能,否则触发器将仅在单击鼠标的框架上以及在其释放时激活

addEventListener(Event.ENTER_FRAME, dragdrop)
function dragdrop(event:Event):void {
"add dragging event here"
}