flash as3 鼠标事件
想做一个滚动条,思路是在滚动条内按下左键,滑块startDrag(),释放左键,stop;但是as3没有as2的dragout事件,而up只是在对象内释放左键才会触发,这...
想做一个滚动条,思路是在滚动条内按下左键,滑块startDrag(),释放左键,stop;但是as3没有as2的dragout事件,而up只是在对象内释放左键才会触发,这样的话,如果按下左键,而把鼠标移动到对象之外释放,滑块仍然会跟随鼠标。
请问,如何侦测对象之外up的事件?
还有加载外部图片的时候图片的左上角就在mc的注册点,如何把任意外部图像加载在mc中心(也就是图像中心和mc的注册点重合)?
!!!另外,改变加载的外部图像大小时,中心点是图片右上角,如何改成图片中心??
是用loader对象加载的。 展开
请问,如何侦测对象之外up的事件?
还有加载外部图片的时候图片的左上角就在mc的注册点,如何把任意外部图像加载在mc中心(也就是图像中心和mc的注册点重合)?
!!!另外,改变加载的外部图像大小时,中心点是图片右上角,如何改成图片中心??
是用loader对象加载的。 展开
2个回答
展开全部
Flash AS3鼠标事件使用详解
鼠标事件(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);
…
问题补充:我可以在down的时候给按钮注册一个over的事件,并在over事件使用之后立即删除,实现类似as2的dragout的效果,但这样做响应似乎很慢。而且相对麻烦很多,还要在up事件中添加删除over的语句。
如果没有dragout,那么有否能监视对象之外释放的事件?up只能在对象内释放的时候触发
MOUSE_OUT,只是当鼠标移出对象的时候触发,而非dragout,后者是 按住左键-移出-释放 才可触发。
如果要用DragDrop, 使用DragEvent, 参考:
http://livedocs.adobe.com/flex/3_cn/langref/mx/events/DragEvent.html
鼠标事件(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);
…
问题补充:我可以在down的时候给按钮注册一个over的事件,并在over事件使用之后立即删除,实现类似as2的dragout的效果,但这样做响应似乎很慢。而且相对麻烦很多,还要在up事件中添加删除over的语句。
如果没有dragout,那么有否能监视对象之外释放的事件?up只能在对象内释放的时候触发
MOUSE_OUT,只是当鼠标移出对象的时候触发,而非dragout,后者是 按住左键-移出-释放 才可触发。
如果要用DragDrop, 使用DragEvent, 参考:
http://livedocs.adobe.com/flex/3_cn/langref/mx/events/DragEvent.html
2010-07-28
展开全部
MOUSE_DOWN时 stage.addEventListener(MouseEvent.MOUSE_UP
因为as3是讲求事件流的 任何事件最终都会向上回流到stage上去
第二个问题自己在加载完成后 调整座标 .x .y
LOADER.contentLoaderInfo.addEventListener(Event.COMPLETE
在完成事件中调整座标
因为as3是讲求事件流的 任何事件最终都会向上回流到stage上去
第二个问题自己在加载完成后 调整座标 .x .y
LOADER.contentLoaderInfo.addEventListener(Event.COMPLETE
在完成事件中调整座标
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询