zoukankan      html  css  js  c++  java
  • 关于双击事件.MouseEvent.DOUBLE_CLICK

    as3提供了双击事件的调用,但有时候碰到双击事件无法响应,所以总结下原因。
    先摘录一段官方关于 doubleClick 事件发生的条件。

    如果 InteractiveObject 的 doubleClickEnabled 标志设置为 true,当用户在该对象上快速连续按下两次并释放指针设备的主按钮时调度。要使 doubleClick 事件发生,它必在以下一系列事件后面:mouseDown、mouseUp、click、mouseDown、mouseUp。 所有这些事件必须共享与 doubleClick 事件相同的目标。 

    再来看一个示例,代码一样的两个影片剪辑,有一个却无法响应双击事件:

    mc_test1.doubleClickEnabled=true;
    mc_test1.addEventListener(MouseEvent.DOUBLE_CLICK,Test1Handler);
    function Test1Handler(e:MouseEvent):void{
         txt.text="test1双击";
    }
    mc_test2.doubleClickEnabled=true;
    mc_test2.addEventListener(MouseEvent.DOUBLE_CLICK,Test2Handler);
    function Test2Handler(e:MouseEvent):void{ 
         txt.text="test2双击";
         trace(e.target.name);
    }
    

    代码完全一样为什么,mc_test2无法响应双击事件呢。
    其中的奥妙在官方的下面那段话。
    要使 doubleClick 事件发生,它必在以下一系列事件后面:mouseDown、mouseUp、click、mouseDown、mouseUp。 所有这些事件必须共享与 doubleClick 事件相同的目标。
    因为mc_test1内部无其他影片剪辑,而mc_test2内部有其他影片剪辑,默认所有的影片剪辑包括文字是自动接收鼠标事件的,所以doubleClick 事件并未发生在mc_test2上,推测其双击事件发生在其子项目上。
    修改下代码成这样:

    mc_test1.doubleClickEnabled=true;
    mc_test1.addEventListener(MouseEvent.DOUBLE_CLICK,Test1Handler);
    function Test1Handler(e:MouseEvent):void{
         txt.text="test1双击";
    }
    mc_test2.doubleClickEnabled=true;
    mc_test2.mouseChildren=false;
    mc_test2.addEventListener(MouseEvent.DOUBLE_CLICK,Test2Handler);
    function Test2Handler(e:MouseEvent):void{ 
         txt.text="test2双击";
         trace(e.target.name);
    }
    

      

  • 相关阅读:
    页面滚屏截图工具推荐
    java总结第二次(剩余内容)//类和对象1
    happy birthday to tbdd tomorrow
    数组增删改查及冒泡
    三个循环方面程序
    三个入门小程序
    java总结第二次//数组及面向对象
    Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
    后台验证url是不是有效的链接
    img 鼠标滑上后图片放大,滑下后图片复原
  • 原文地址:https://www.cnblogs.com/wqing/p/3300707.html
Copyright © 2011-2022 走看看