flash 的 MouseEvent 浅淡(ROLL_OVER 与 MOUSE_OVER 区别)

经常发现有部分flash 开发人员对MouseEvent中的一些事件类型区分不是很清楚,闲来再谈一下flash 中的 MouseEvent 中的ROLL_OVER 和 MOUSE_OVER 的区别,希望能加深认识,废话少说,先直接上代码:

package
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.MouseEvent;

    [SWF(width = '800',height = '600', backgroundColor = '0x000000')]
    public class MouseEventExample extends Sprite
    {
        public function MouseEventExample()
        {
            var outContainer :Sprite = new Sprite();
            outContainer.graphics.beginFill(0xcccccc);
            outContainer.graphics.drawRect(0,0,300,300);
            outContainer.graphics.endFill();
            this.addChild(outContainer);
            outContainer.x = (stage.stageWidth - outContainer.width)/2;
            outContainer.y = (stage.stageHeight - outContainer.height)/2;
            var inShape :Sprite = new Sprite();
            inShape.graphics.beginFill(0xff0000);
            inShape.graphics.drawCircle(0,0,50);
            inShape.graphics.endFill();
            inShape.x = outContainer.width /2;
            inShape.y = outContainer.height /2;
            outContainer.addChild(inShape);
            //
            outContainer.addEventListener(MouseEvent.ROLL_OVER,onRollOver);
            outContainer.addEventListener(MouseEvent.ROLL_OUT,onRollOut);
            outContainer.addEventListener(MouseEvent.MOUSE_OVER,onMouseOver);
            outContainer.addEventListener(MouseEvent.MOUSE_OUT,onMouseOut);
        }
        
        private function onRollOver(e :MouseEvent):void
        {
            trace("roll over");
        }
        
        private function onRollOut(e :MouseEvent):void
        {
            trace("roll out");
        }
        
        private function onMouseOver(e :MouseEvent):void
        {
            trace("mouse over");
        }
        
        private function onMouseOut(e :MouseEvent):void
        {
            trace("mouse out");
        }
    }
}

当鼠标进入容器时 打印出:

roll over
mouse over

进入容器里的元件时 打印出:

mouse out
mouse over

离开容器里的元件时 打印出:

mouse out
mouse over

最后离开容器时 打印出:

mouse out
roll out


由此可见 ROLL_OVER 和 ROLL_OUT 只有在鼠标进入 和 离开 监听的容器才会触发,而经过容器里面的元件子项时不会触发;而MOUSE_OVER 和 MOUSE_OUT 不管是进入和离开容器,还是经过和离开容器中元件子项时,都会触发事件。


分析完毕,希望对各位有所触发

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值