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

闪光 – 在Actionscript 3中拖动时检测鼠标离开舞台

发布时间:2020-12-15 19:48:46 所属栏目:百科 来源:网络整理
导读:Event.MOUSE_LEAVE是伟大的Actionscript 3,但它似乎没有触发,如果用户握住他们的左(或正确的事情)鼠标按钮。 有没有办法检测鼠标在鼠标按住的同时离开Flash影片?或者如果它是在Flash电影之外发布的? 解决方法 要获得所有这一切需要一点点黑客。您必须存
Event.MOUSE_LEAVE是伟大的Actionscript 3,但它似乎没有触发,如果用户握住他们的左(或正确的事情)鼠标按钮。

有没有办法检测鼠标在鼠标按住的同时离开Flash影片?或者如果它是在Flash电影之外发布的?

解决方法

要获得所有这一切需要一点点黑客。您必须存储鼠标是否离开舞台,并相应地处理Event.MOUSE_LEAVE事件。这样做可以提供所有正常的鼠标功能,包括不要因为鼠标离开舞台而阻止拖动。由于用户可能会回到舞台上并继续拖动,因此等待用户在舞台上或者舞台上释放鼠标。

var mouSEOffStage:Boolean;

var bonk:YourDisplayObject = new YourDisplayObject()
addChild(bonk);
bonk.addEventListener(MouseEvent.MOUSE_DOWN,function():void {
  mouSEOffStage = false;

  bonk.startDrag();

  stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
  stage.addEventListener(Event.MOUSE_LEAVE,mouseLeave);
  stage.addEventListener(MouseEvent.MOUSE_OUT,mouSEOut);
  stage.addEventListener(MouseEvent.MOUSE_OVER,mouSEOver);
})

private function mouseUp(e:MouseEvent) :void {
  trace("Mouse Up On Stage")
  bonk.stopDrag()
}

private function mouseLeave(e:Event) :void {
  if(mouSEOffStage){
    trace("mouse up and off stage");
    bonk.stopDrag();
  }else{
    trace("mouse has left the stage");
    //no reason to stop drag here as the user hasn't released the mouse yet
  }
}

private function mouSEOut(e:MouseEvent) :void {
  mouSEOffStage = true;
  trace("mouse has left the stage")
}

private function mouSEOver(e:MouseEvent) :void {
  mouSEOffStage = false;
  trace("mouse has come back on stage");
}

黑客是,当鼠标从舞台上释放时,MOUSE_LEAVE事件而不是MOUSE_UP事件被触发,因此您必须跟踪鼠标是否已经在播放时已经处于关闭状态。

拖动完成后,您当然希望删除与检测鼠标悬停和鼠标悬停相关联的所有事件侦听器,但该代码被遗漏以供读取。

(编辑:李大同)

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

    推荐文章
      热点阅读