[AS3]鼠标事件mouseevent和鼠标位置的一些总结说明
鼠标事件(mouseevent)和鼠标位置(as3鼠标坐标总结)是ria中最重要的人机交互途径。最近在做一个动态产品展示的系统produtshow的时候才发现自己对鼠标事件的了解有多么肤浅。现在productshow已经做完了,这里把在使用鼠标事件时要注意的问题总结一下:
1 鼠标事件分为mouse_over, mouse_move, mouse_down, mouse_up, mouse_out, mouse_wheel和mouse_leave。
其中前六个事件都来自flash.events.mouseevent类,最后一个mouse_leave却是来自flash.events.event,在导入类包的时候一定要注意这个问题,因为我在这点上就花了很长时间调试,才得发现问题所在。
mouse_over - 鼠标移动到目标对象之上时触发, 可以用于模拟按钮的mouse over效果;
mouse_move - 鼠标在目标对象之上移动时触发,主要用于判断。比如判断在拖拽实例时,实例是否在允许的范围之内,如果超出,立刻停止拖拽或者重新设定实例的坐标;
mouse_down - 鼠标在目标对象之上按下时触发。注意,只有按下鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之外按下鼠标左键,再移动到目标对象之上时,也不会触发;
mouse_up - 鼠标在目标对象之上松开时触发。注意,只有松开鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之上按下鼠标左键,再移动到目标对象之外松开时,不会触发。但在目标对象之外按下鼠标左键,再移动到目标对象之上松开时,就会触发。
mouse_out- 鼠标移动到目标对象之外时触发。
mouse_wheel - 鼠标在目标对象之上转动滚轮时触发。
mouse_leave - 当光标离开舞台时触发(stage.addeventlistener(event.mouse_leave,leavehandler);)。在使用自定鼠标后,在鼠标离开舞台时,触发mouse_leave事件,然后可以把自定义的鼠标隐藏掉,避免还停留在舞台上。
2 mousechildren。目标对象中含有子实例时,感应鼠标行为的是子时列,而非目标对象。
如果使用 cursor.mouseenabled=false; 就可以由目标对象来更应鼠标行为。
3 mouseenabled。当实例重叠时,出于显示列表上方的实例总比下方实例更有优先权感应鼠标行为。
当想让下方实例感应鼠标行为时使用 cursor.mouseenabled=false; 即可。这常用于自定义鼠标后,去除自定义鼠标对鼠标行为的干涉,因为自定义鼠标往往一直处于鼠标下方,其他实例无法再感应到鼠标的变化。
另外,也许double_click也应该算做鼠标事件,但要使用它,必须先让
doubleclickenabled=true:
var bg:sprite=new sprite();
bg.doubleclickenabled=true;
bg.addeventlistener(mouseevent.double_click,clickhandler);
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例