Actionscript 3.0事件之Mouse_OVER,MOUSE_OUT,ROLL_OVER,ROLL_OUT的区别
2011-05-01 01:19
465 查看
最近研究了actionscript 3.0的事件机制,其实不难。但是在鼠标事件中,有几个事件类型非常相近,一开始没有在意,以至于陷于困难。后来回头再细看AS的事件机制,突然恍然大悟。起个例子吧:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class MouseEvents extends Sprite
{
public function MouseEvents()
{
init();
}
private function init():void
{
var sp:Sprite=new MovieClip();
addChild(sp);
sp.graphics.beginFill(0xff0000);
sp.graphics.drawCircle(0,0,50);
sp.graphics .endFill();
sp.x=stage.stageWidth/2;
sp.y=stage.stageHeight/2;
var sp1:Sprite=new Sprite();
sp.addChild(sp1);
sp1.graphics.beginFill(0xff7700);
sp1.graphics.drawCircle(0,0,25);
sp1.graphics .endFill();
sp.addEventListener(MouseEvent.MOUSE_OVER,onMRO);
sp.addEventListener(MouseEvent.MOUSE_OUT,onMRO);
sp.addEventListener(MouseEvent.ROLL_OVER,onMRO);
sp.addEventListener(MouseEvent.ROLL_OUT,onMRO);
sp.addEventListener(MouseEvent.MOUSE_WHEEL,onMRO);
sp1.addEventListener(MouseEvent.MOUSE_OVER,onMRO);
sp1.addEventListener(MouseEvent.MOUSE_OUT,onMRO);
sp1.addEventListener(MouseEvent.ROLL_OVER,onMRO);
sp1.addEventListener(MouseEvent.ROLL_OUT,onMRO);
sp1.addEventListener(MouseEvent.MOUSE_WHEEL,onMRO);
}
public function onMRO(e:MouseEvent):void
{
trace("目标对象:"+e.target+" 当前对象:"+e.currentTarget+" 事件类型:"+e.type+" 事件阶段:"+e.eventPhase);
}
}
}
鼠标光标移动过程:从舞台空白地方移入sp,再移入sp1,然后再逆向移动。结果如下:
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:rollOver 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOver 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOut 事件阶段:2
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:rollOver 事件阶段:2
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:mouseOver 事件阶段:2
目标对象:[object Sprite] 当前对象:[object MovieClip] 事件类型:mouseOver 事件阶段:3
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:mouseWheel 事件阶段:2
目标对象:[object Sprite] 当前对象:[object MovieClip] 事件类型:mouseWheel 事件阶段:3
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:mouseOut 事件阶段:2
目标对象:[object Sprite] 当前对象:[object MovieClip] 事件类型:mouseOut 事件阶段:3
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:rollOut 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOver 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOut 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:rollOut 事件阶段:2
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class MouseEvents extends Sprite
{
public function MouseEvents()
{
init();
}
private function init():void
{
var sp:Sprite=new MovieClip();
addChild(sp);
sp.graphics.beginFill(0xff0000);
sp.graphics.drawCircle(0,0,50);
sp.graphics .endFill();
sp.x=stage.stageWidth/2;
sp.y=stage.stageHeight/2;
var sp1:Sprite=new Sprite();
sp.addChild(sp1);
sp1.graphics.beginFill(0xff7700);
sp1.graphics.drawCircle(0,0,25);
sp1.graphics .endFill();
sp.addEventListener(MouseEvent.MOUSE_OVER,onMRO);
sp.addEventListener(MouseEvent.MOUSE_OUT,onMRO);
sp.addEventListener(MouseEvent.ROLL_OVER,onMRO);
sp.addEventListener(MouseEvent.ROLL_OUT,onMRO);
sp.addEventListener(MouseEvent.MOUSE_WHEEL,onMRO);
sp1.addEventListener(MouseEvent.MOUSE_OVER,onMRO);
sp1.addEventListener(MouseEvent.MOUSE_OUT,onMRO);
sp1.addEventListener(MouseEvent.ROLL_OVER,onMRO);
sp1.addEventListener(MouseEvent.ROLL_OUT,onMRO);
sp1.addEventListener(MouseEvent.MOUSE_WHEEL,onMRO);
}
public function onMRO(e:MouseEvent):void
{
trace("目标对象:"+e.target+" 当前对象:"+e.currentTarget+" 事件类型:"+e.type+" 事件阶段:"+e.eventPhase);
}
}
}
鼠标光标移动过程:从舞台空白地方移入sp,再移入sp1,然后再逆向移动。结果如下:
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:rollOver 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOver 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOut 事件阶段:2
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:rollOver 事件阶段:2
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:mouseOver 事件阶段:2
目标对象:[object Sprite] 当前对象:[object MovieClip] 事件类型:mouseOver 事件阶段:3
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:mouseWheel 事件阶段:2
目标对象:[object Sprite] 当前对象:[object MovieClip] 事件类型:mouseWheel 事件阶段:3
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:mouseOut 事件阶段:2
目标对象:[object Sprite] 当前对象:[object MovieClip] 事件类型:mouseOut 事件阶段:3
目标对象:[object Sprite] 当前对象:[object Sprite] 事件类型:rollOut 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOver 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:mouseOut 事件阶段:2
目标对象:[object MovieClip] 当前对象:[object MovieClip] 事件类型:rollOut 事件阶段:2
相关文章推荐
- JavaScript鼠标事件onmousedown,onmousemove,onmouseout,onmouseover,onmouseup的用法和区别详解
- MouseOut/MouseOver/RollOut/RollOver事件比照
- 转载:mouseOver/mouseOut 与 rollOver/rollOut的区别
- MouseOut/MouseOver/RollOut/RollOver事件比照
- [转]区别AS3.0中MOUSE_OVER、ROLL_OVER,MOUSE_OUT、ROLL_OUT
- MOUSE_OVER/MOUSE_OUT与ROLL_OVER/ROLL_OUT的区别
- AS3.0中MOUSE_OVER、ROLL_OVER,MOUSE_OUT、ROLL_OUT的区别
- 最终解决 mouseenter, mouseleave , mouseout mousehover mousemove等事件的区别?
- ROLL_OVER和ROLL_OUT,MOUSE_OVER和 MOUSE_OUT。
- javascript事件(onclick/onmouseover/onmouseout等)
- web-前端之事件冒泡,其中包括(onmousemove,onmouseover,onmouseout,onmouseleave,onmouseup,onmouseentter)可用于一些计数小游戏
- 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
- <转>css中用expression实现js的onmouseover/onmouseout事件
- easyui的datagrid实现数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
- AS3:辨析ROLL_OVER与MOUSE_OVER,ROLL_OUT与MOUSE_OUT
- 解决内部元素onMouseOver/onMouseOut事件冒泡触发父元素的相应事件
- 鼠标移入和移出事件mouseenter VS mouseover 、mouseleave VS mouseout
- 扩充 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
- 对mouseout/mouseleave,mouseover/mouseenter事件的解析
- AS3:辨析ROLL_OVER与MOUSE_OVER,ROLL_OUT与MOUSE_OUT