加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

actionscript-3 – Flash右键单击的动作与左键单击不同

发布时间:2020-12-15 07:29:38 所属栏目:百科 来源:网络整理
导读:我刚刚更新到flash player 11.2,它允许监听MouseEvent.RIGHT_MOUSE_UP和MouseEvent.RIGHT_MOUSE_DOWN. 我遇到的问题是这些事件的行为与其MOUSE_UP / MOUSE_DOWN对应物的行为不同.具体来说,无论鼠标在哪里,都会启动MOUSE_UP事件.这允许在闪存窗口外拖动并且仍
我刚刚更新到flash player 11.2,它允许监听MouseEvent.RIGHT_MOUSE_UP和MouseEvent.RIGHT_MOUSE_DOWN.

我遇到的问题是这些事件的行为与其MOUSE_UP / MOUSE_DOWN对应物的行为不同.具体来说,无论鼠标在哪里,都会启动MOUSE_UP事件.这允许在闪存窗口外拖动并且仍然具有完全向下 – >每当用户点击Flash播放器时,都会启动事件循环.

但是,RIGHT_MOUSE_UP / DOWN似乎不是这种情况.当我右键单击播放器并在播放器外部释放时,我没有得到RIGHT_MOUSE_UP事件,这意味着可以在不接收UP事件的情况下接收多个RIGHT_MOUSE_DOWN事件.

是否有一个已知的解决方法或是否有一个我必须设置的选项?

编辑:

这是一个代码示例:

stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
stage.addeventListener(MouseEvent.RIGHT_MOUSE_UP,onRightMouseUp);
stage.addeventListener(MouseEvent.RIGHT_MOUSE_DOWN,onRightMouseDown);

//...
//all callback function follow a similar format as :
private function onMouseUp(e : MouseEvent) : void
{
    leftClick_ = false;//signaling that leftClick is not pressed
}

解决方法

您可以在鼠标离开舞台时收听,这可以作为RIGHT_CLICK_UP事件的代理.

package 
{
    //Imports
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.MouseEvent;

    //Class
    [SWF(width="640",height="480",frameRate="60",backgroundColor="0x555555")]
    public class RightClickTest extends Sprite
    {
        //Constructor
        public function RightClickTest()
        {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;

            addEventListener(Event.ADDED_TO_STAGE,init);
        }

        //Initialize
        private function init(event:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE,init);

            stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN,mouseRightClickEventHandler);
            stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP,mouseRightClickEventHandler);
            stage.addEventListener(Event.MOUSE_LEAVE,mouseLeaveEventHandler);
        }

        //Mouse Right Click Event Handler
        private function mouseRightClickEventHandler(event:MouseEvent):void
        {
            switch (event.type)
            {
                case MouseEvent.RIGHT_MOUSE_DOWN:   trace("Right Mouse Down");
                                                    break;

                case MouseEvent.RIGHT_MOUSE_UP:     trace("Right Mouse Up");
            }
        }

        //Mouse Leave Event Handler
        private function mouseLeaveEventHandler(event:Event):void
        {
            trace("Mouse Leave");
        }
    }
}

但是,如果您试图避免允许用户显示多个右键单击上下文菜单(或类似的东西),您可以在代码中实现一个简单的检查,以便在显示新的菜单之前隐藏可见的右键单击上下文菜单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读