• 关于双击事件.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);
    }
    

      

  • 相关阅读:
    由于空间,注定的结果——第五届山东省ACM编程比赛总结
    GPS 偏移校正(WGS-84) 至(GCJ-02) java版本号以实现
    IM设计与实现的系统模块的聊天记录
    Android数据存储——SQLite数据库(模板)
    JAVA多线程和并发基础面试问答
    好博客
    浅谈Java中的equals和==
    JVM的内存区域划分
    try,catch,finally
    Java 如何有效地避免OOM:善于利用软引用和弱引用
  • 原文地址:https://www.cnblogs.com/wqing/p/3300707.html
Copyright © 2020-2023  润新知