zoukankan      html  css  js  c++  java
  • ROLL_OVER与MOUSE_OVER

    ROLL_OVER与MOUSE_OVER的调度的区别

    • 可视组件在鼠标进入该组件时会调度MOUSE_OVER事件,即使是从其子组件移到该组件依然会触发该事件。
    • 可视组件在鼠标从不是其子组件的其余组件中进入该组件时会调度ROLL_OVER事件,直观来看,就是鼠标从外部移入该组件才调用。

    ROLL_OUT与MOUSE_OUT的调度的区别

    • 可视组件在鼠标移出该组件时会调度MOUSE_OUT事件,即使是移到该组件的子组件依然会触发该事件。
    • 可视组件在鼠标移到不是其子组件的其余组件中会调度ROLL_OUT事件,直观来看,就是鼠标移到该组件外部才调用。

    在含有子组件的可视组件上监听四个事件

    • 鼠标由外部进入母组件时能监听到由母组件调度的ROLL_OVER与MOUSE_OVER事件;
    • 鼠标由母组件进入子组件时能监听到由子组件调度的MOUSE_OVER事件和母组件调度的MOUSE_OUT事件;
      • 此时子组件还调度了ROLL_OVER事件,但是由于ROLL_OVER没有冒泡阶段,因此其母组件不能监听到该事件;
    • 鼠标由子组件移到母组件时能监听到由子组件调度的MOUSE_OUT事件和母组件调度的MOUSE_OVER事件;
      • 同样的,此时子组件还调度了ROLL_OUT事件,但是母组件同样监听不到;
    • 鼠标由母组件移到外部时能监听到由母组件调度的ROLL_OUT与MOUSE_OUT事件;
    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
    

      

  • 相关阅读:
    1057. 数零壹(20)
    Docker镜像操作
    Maven 常用操作
    k8s集群搭建(kubadm方式)
    Spring单事务多线程操作引来的问题(Lock wait timeout exceeded; try restarting transaction)
    Centos7 Maven 安装教程
    Centos7 Git安装教程
    Centos7 Docker安装mysql5.7
    Centos7 Docker安装Nginx教程
    SpringBoot启动及配置文件加载原理分析
  • 原文地址:https://www.cnblogs.com/regalys168/p/4227960.html
Copyright © 2011-2022 走看看