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

      

  • 相关阅读:
    SqlServer相关文章
    C#字典(Dictionary)相关文章记录
    Mysql相关文章
    Rabbitmq相关文章
    C#多线程之锁相关文章
    23种设计模式相关文章
    IdentityServer4之Consent与offline_access
    .netCore mvc 在javascript中读取属性中文乱码的问题
    基于 NET5的QQ扫码登录的第三方实现(无需注册开发者)
    Windows 操作系统开启长路径支持
  • 原文地址:https://www.cnblogs.com/wqing/p/3300707.html
Copyright © 2011-2022 走看看