• currentTarget 与 Target 的区别


    在一般情况下,target与currentTarget指向的是同一个对象。一般情况是指我们只对某一个独立的mc添加侦听器。如下:

    var mc:Sprite=new Sprite();
    addChild(mc);
    mc.x=300,mc.y=300;
    mc.graphics.beginFill(0×000000);
    mc.graphics.drawRoundRect(0,0,50,50,10,10);
    mc.name=”圆角矩形mc”;

    mc.addEventListener(MouseEvent.CLICK,clickF);
    function clickF(e) {
     trace(“target:”+e.target.name);
     trace(“currentTarget:”+e.currentTarget.name);
    }

    //输出中可以看出,target与currentTarget均指向”圆角矩形mc”

      特殊情况是指,有两个容器实例:sp1和sp2,且sp2装在sp1之中,即sp1.addChild(sp2)。然后分别给sp1和sp2添加侦听器,此时target与currentTarget的指向是较复杂的。见下面的代码:

    var sp1:Sprite=new Sprite();
    addChild(sp1);
    sp1.x=100;
    sp1.y=50;
    sp1.name=”sp1方形”;

    var sp2:Sprite=new Sprite();
    sp1.addChild(sp2);
    sp2.x=100;
    sp2.y=50;
    sp2.name=”sp2圆形”;

    sp1.graphics.beginFill(0xff0000);
    sp1.graphics.drawRect(0,0,50,50);

    sp2.graphics.beginFill(0×0000ff);
    sp2.graphics.drawCircle(0,0,25);

    sp1.addEventListener(MouseEvent.CLICK,clickFunc);
    //sp2.addEventListener(MouseEvent.CLICK,clickFunc);
    function clickFunc(e) {
    trace(“target:”+e.target.name);
    trace(“currentTarget:”+e.currentTarget.name)
    }

      代码是给父容器添加了侦听器,这里又分两种情况:一、点击sp1,输出target与currentTarget均指向sp1;二、点击sp2,输出target指向sp2,currentTarget指向sp1(即父容器);

      将sp1.addEventListener(MouseEvent.CLICK,clickFunc);注释掉,再打开sp2.addEventListener(MouseEvent.CLICK,clickFunc);的注释,此时也可分两种情况:一、点击sp1,结果没有反应,因为并未给它添加侦听器;二、点击sp2,输出target与currentTarget均指向sp2(很好理解,也因为它的父级容器没有添加侦听)。

      将以上为sp1和sp2注册侦听器的语句都打开,点击sp1会怎样?点击sp2呢?

      点击sp1输出:

    target:sp1方形
      currentTarget:sp1方形

      点击sp2输出:

    target:sp2圆形
      currentTarget:sp2圆形
    target:sp2圆形
      currentTarget:sp1方形

      说明父级和子级都添加侦听的情况下,点击子级,不仅它本身能侦听到,它的父级也可以侦听到。

    由上面可以得出..当使用事件的时候,只需注意addEventListener者 和 使用currentTarget.就不会出现错误...

  • 相关阅读:
    无刷电机控制学习笔记
    "程序宅男"从改善皮肤开始——不再长痘
    跨平台国际化测试——Switch本体测试
    自动驾驶技术了解
    互联网加班狗:零碎时间学英语的方法
    ASCII,Unicode,GBK和UTF-8字符编码的区别和联系
    领域驱动设计的必要性和模型标准——《领域驱动设计-精简版》
    异步、非阻塞和IO多路复用总结
    Debian 8 安装Nginx最新版本
    字节、字、bit、Byte、byte的关系区分
  • 原文地址:https://www.cnblogs.com/zhepama/p/3348924.html
Copyright © 2020-2023  润新知