[转]AS3.0中MOUSE_OVER、ROLL_OVER,MOUSE_OUT、ROLL_OUT区别

殿堂之路上面对这两个事件的说明很详细,我也引用一下书上面的话:

这两个事件都是侦听鼠标指针当前是否在现实对象上方的。所不同的是MouseEvent.ROLL_OVER和MouseEvent.ROLL_OUT事件的bubbles属性为FALSE,意味着这两个事件不参与事件流冒泡。这会带来什么不同呢?举例说明,一个容器有子对象A和B,制定该容器侦听MouseEvent.ROLL_OVER事件,target是A,当鼠标移开一些,离开了子对象A处于子对象B上方时,虽然这时还在容器内,但立刻会发出一个MouseEvent.MOUSE_OUT事件,target是A,随后又会发出一个MouseEvent.MOUSE_OVER事件,target是B,这和我们的想法可能不同,我们原来希望只要鼠标指针还在容器上方,就不应该发出MouseEvent.MOUSE_OUT事件。

这时,如果不希望在子对象上移动而导致容器不停发出事件,那么可以使用MouseEvent.ROLL_OVER和MouseEvent.ROLL_OUT。ActionScript3设计这对事件本身就是为了简化我们的代码编写,不必勉强自己再去使用MouseEvent.MOUSE_OUT和MouseEvent.MOUSE_OVER。

看下面的flash演示,请把鼠标滑过按钮:

如flash所示,当你把鼠标放到第一个按钮上来的时候,会出现几个按钮,开始的按钮和后来出现的按钮都属于btn_mc,btn_mc包含一段按钮出现的动画,其中在第一帧和最后一帧都加了stop();看主场景第一帧的代码:

this.btn_mc.addEventListener(MouseEvent.ROLL_OVER,go);
this.btn_mc.addEventListener(MouseEvent.ROLL_OUT,back);
function go(evt:MouseEvent):void{
 evt.target.gotoAndPlay(2);
 }
 function back(evt:MouseEvent):void{
  evt.target.gotoAndStop(1);
}

以上代码就能实现上述flash的效果,如果把上面的MouseEvent.ROLL_OVER换成MouseEvent.MOUSE_OVER,会发生什么事呢?那么当你鼠标离开最开始的按钮的时候,会产生一个MouseEvent.MOUSE_OUT事件,然后鼠标到下面按钮的时候,又会产生MouseEvent.MOUSE_OVER事件,此时,会报错。“在flash.display.SimpleButton上找不到属性gotoAndPlay,且没有默认值。很显然,此时go函数中的evt.target就变成了小按钮了。如果是MouseEvent.ROLL_OVER的话,go函数中的evt.target还是指的容器。用ROLL_OVER、ROLL_OUT来制作精美的flash二级导航菜单还是挺不错的。实现起来也比较简单。

<!--分页标签-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值