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

      

  • 相关阅读:
    How To Monitor Remote Linux Host using Nagios 3.0
    Nagios的安装配置与应用之五监控远程Linux服务器
    Unix/Linux下如何使用Vi编辑器
    Nagios Apache报Internal Server Error错误的解决方法
    EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储
    MQTT 5.0
    发布说明
    EMQ X 插件持久化系列 (四)PostgreSQL 数据持久化
    EMQ X 规则引擎系列(十四)- 桥接消息到 Pulsar
    如何使用 MQTT 报文实现发布订阅功能
  • 原文地址:https://www.cnblogs.com/wqing/p/3300707.html
Copyright © 2011-2022 走看看