·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0的双击事件代码分析(2)

时间:2012-07-05 10:53CuPlayer.com
其中的奥妙在官方的下面那段话。 要使 doubleClick 事件发生,它必在以下一系列事件后面:mouseDown、mouseUp、click、mouseDown、mouseUp。 所有这些事件必须共享与 doubleClick 事件相同的目标。 因为mc_test1内

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

  1. mc_test1.doubleClickEnabled=true;  
  2. mc_test1.addEventListener(MouseEvent.DOUBLE_CLICK,Test1Handler);  
  3. function Test1Handler(e:MouseEvent):void  
  4. {  
  5. txt.text="test1双击";  
  6. }  
  7.  
  8. mc_test2.doubleClickEnabled=true;  
  9. mc_test2.mouseChildren=false;  
  10. mc_test2.addEventListener(MouseEvent.DOUBLE_CLICK,Test2Handler);  
  11. function Test2Handler(e:MouseEvent):void  
  12. {  
  13. txt.text="test2双击";  
  14. trace(e.target.name);  

果然这时候一切正常。为了再验证下是否真的发生在子项。添加以下输出信息。

  1. mc_test1.doubleClickEnabled=true;  
  2. mc_test1.addEventListener(MouseEvent.DOUBLE_CLICK,Test1Handler);  
  3. function Test1Handler(e:MouseEvent):void  
  4. {  
  5. txt.text="test1双击";  
  6. }  
  7.  
  8. mc_test2.doubleClickEnabled=true;  
  9. mc_test2.addEventListener(MouseEvent.DOUBLE_CLICK,Test2Handler);  
  10. mc_test2.addEventListener(MouseEvent.MOUSE_DOWN,TestDownHandler);  
  11. mc_test2.addEventListener(MouseEvent.MOUSE_UP,TestUpHandler);  
  12. mc_test2.addEventListener(MouseEvent.CLICK,TestClickHandler);  
  13. function Test2Handler(e:MouseEvent):void  
  14. {  
  15. txt.text="test2双击";  
  16. trace(e.target.name);  
  17. }  
  18. function TestDownHandler(e:MouseEvent):void  
  19. {  
  20. trace("按下2");  
  21. trace(e.target.name);//instance4  
  22. }  
  23. function TestUpHandler(e:MouseEvent):void  
  24. {  
  25. trace("弹起2");  
  26. trace(e.target.name);//instance4  
  27. }  
  28. function TestClickHandler(e:MouseEvent):void  
  29. {  
  30. trace("单击2");  
  31. trace(e.target.name);//instance4  

并没有输出mc_test2,而输出instance4,这应该就是自动命名的子项影片剪辑吧。

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器