1.Sprite/MovieClip的Enter_Frame事件,不受addChild/removeChild影响

简单点讲:Sprite或MovieClip对象一旦为其添加了Enter_Frame事件监听,对应的Enter_Frame处理函数将会马上被调用,并一直执行下去(不管你是否将其addChild到显示列表,或者将其从显示列表removeChild),直到该对象removeEventListener相应的监听器为止。

同样:MovieClip一旦被new出来,就会自动播放(在未用任何代码stop()的前提下),不管你是否将其addChild或removeChild

注:其它事件也类似,在AS3的世界中,事件一旦被监听,要想停止事件响应,唯一的方法只能是removeEventListener。(这一点跟c#中完全不同,在c#中不管是webform还是winform,一旦按钮被disabled了,肯定就无法触发按钮的Click事件,但在AS3中,组件是否被禁用,跟组件是否能响应事件完全是没有任何关联的!)

测试代码:

var _sprite:Sprite = new Sprite();
_sprite.graphics.lineStyle(1,0);
_sprite.graphics.beginFill(0xff0000);
_sprite.graphics.drawCircle(0,0,50);
_sprite.graphics.endFill();_sprite.addEventListener(Event.ENTER_FRAME,onSpriteEnterFrame);//实际上:程序执行到这里就会一直不停的跑onSpriteEnterFrame了function onSpriteEnterFrame(e:Event):void{trace("我是_Sprite",getTimer());
}addChild(_sprite);
_sprite.x = stage.stageWidth/2 ;
_sprite.y = stage.stageHeight/2 ;_sprite.addEventListener(MouseEvent.CLICK,onSpriteMouseClick);function onSpriteMouseClick(e:MouseEvent):void{removeChild(_sprite);//移除自己  _sprite=null;//注意:即使把自身设置为null,原来注册的onSpriteEnterFrame函数仍会一直执行,正确的方法只能用removeEventListener才能移除Enter_Frame事件//_sprite.removeEventListener(Event.ENTER_FRAME,onSpriteEnterFrame);
}

2.ADDED、ADDED_TO_STAGE、REMOVED、REMOVED_FROM_STAGE这几个事件的区别

var _container:Sprite = new Sprite();_container.addEventListener(Event.ADDED,onAdded);
_container.addEventListener(Event.ADDED_TO_STAGE,onAddedToStage);
_container.addEventListener(Event.REMOVED,onRemoved);
_container.addEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStage);function onAdded(e:Event):void {trace("onAdded:",e);
}function onAddedToStage(e:Event):void {trace("onAddedToStage:",e);
}function onRemoved(e:Event):void {trace("onRemoved:",e);
}function onRemovedFromStage(e:Event):void {trace("onRemovedFromStage:",e);
}addChild(_container);
//onAdded: [Event type="added" bubbles=true cancelable=false eventPhase=2]
//onAddedToStage: [Event type="addedToStage" bubbles=false cancelable=false eventPhase=2]var _sub:Sprite = new Sprite();_container.addChild(_sub);
//onAdded: [Event type="added" bubbles=true cancelable=false eventPhase=3]/*_container.removeChild(_sub);
//onRemoved: [Event type="removed" bubbles=true cancelable=false eventPhase=3]*/removeChild(_container);
//onRemoved: [Event type="removed" bubbles=true cancelable=false eventPhase=2]
//onRemovedFromStage: [Event type="removedFromStage" bubbles=false cancelable=false eventPhase=2]_container.removeChild(_sub);
//onRemoved: [Event type="removed" bubbles=true cancelable=false eventPhase=3]

区别:

ADDED是子对象被添加到自身时触发,ADDED_TO_STAGE是对象本身被添加到显示列表时触发;类似的:REMOVED当子对象从自身移除时触发,REMOVED_FROM_STAGE是自身从显示列表中移除时触发;

ADDED/REMOVED事件会冒泡,而ADDED_TO_STAGE/REMOVED_FROM_STAGE不冒泡,也就是说每次addChild或removeChild自身时,下面的ADDED/REMOVED事件也会冒泡上来先被触发,然后才触发ADDED_TO_STAGE/REMOVED_FROM_STAGE事件.

转载于:https://www.cnblogs.com/yjmyzz/archive/2010/07/06/1772458.html

AS3初学者容易迷糊的几个问题相关推荐

  1. 不能执行autowired_想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做...

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  2. php获取url文件大小,PHP通过URL获取文件大小

    function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url['host'],empty($url['por ...

  3. 异常java.lang.Thread.dumpStack(Unknown Source)

    转自: http://www.blogjava.net/landon/archive/2011/02/27/345265.html 昨天在公司写了一段代码,很简单,就是测试Thread的dumpSta ...

  4. C语言多维数组与多级指针

    多维数组与多级指针也是初学者感觉迷糊的一个地方.超过二维的数组和超过二级的指针其实并不多用.如果能弄明白二维数组与二级指针,那二维以上的也不是什么问题了.所以本节重点讨论二维数组与二级指针. 一.二维 ...

  5. linux挂移动硬盘命令,linux挂载命令mount及U盘、移动硬盘的挂载

    一.mount的命令格式是(注意mount只能在root权限下运行) mount dervice dir dervice是要挂载的设备,dir是挂载点 二.查看当前磁盘列表的设备 fdisk -l 显 ...

  6. 【UML】 用例粒度

    前言: 刚刚接触uml的时候,这个粒度搞的我一脸懵逼,但是经过系统的学习,还是将其解决了!这块的知识属于uml用例图中的知识,所以在解释名词的时候都是以uml为根据的! 1.什么是用例 以前在学软件工 ...

  7. GMM-HMM kaldi 详解

    虽然现在端到端语音识别模型可以直接对后验概率建模,可以不需要HMM结构了.但实际上目前很多state-of-the-art模型还是以HMM结构为主,比如chain model.而且掌握HMM-GMM结 ...

  8. C#接口作用的深入理解

    原文出处: 指尖流淌-吴学雷 1.C#接口的作用 C# 接口是一个让很多C#初学者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口 ...

  9. AS3.0常用第三方类库:TweenMax

    一,主要代码结构: com.greensock包里面,首先最主要的就是TweenMax.as:然后一个常用的是 com.greensock.easing.*;里面包含了15个缓动,下文再一一介绍:另外 ...

最新文章

  1. CountDownLatch实时通信
  2. Jupyter Notebook 快速入门(上)
  3. 【数据结构】排序算法及优化整理
  4. 处理ABAP Netweaver gateway service使用过程中遇到的400 error - invalid key predicate type for guid
  5. Spring BeanDefinition
  6. PAT乙级(1026 程序运行时间)
  7. 具有审计表的实体框架
  8. 计算机二级考试改错题技巧
  9. php观察者模式使用场景,php设计模式系列--观察者模式
  10. oracle 表复制 long,【学习笔记】Oracle数据库使用copy实现long类型转移表空间案例 ORA-00997...
  11. python读取文件夹下所有图像_Python 读取指定文件夹下的所有图像方法
  12. android彻底退出应用_Android完全退出应用程序的方法
  13. ERP的总体结构(ERP的工作原理1)-------(转)
  14. 3D人脸重建:《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network》
  15. JSP概述——什么是JSP、JSP运行原理
  16. Windows上CLion配置和使用教程
  17. BBEdit的正则表达式语法
  18. 智哪儿高端建材市场调研:智能家居产品占几成?结果超出你的想象
  19. 文件与base64格式转换
  20. 【转载】使用JQDATA获取数据并本地化(Mysql储存)

热门文章

  1. java8-接口新特性
  2. 资源隔离之 Linux namespace
  3. Algorand 共识算法 BA* 入门
  4. [以太坊源代码分析] II. 数据的呈现和组织,缓存和更新
  5. 阿里云查看mysql是否安装_阿里云CentOS服务器mysql安装
  6. QThreadPool Class的翻译
  7. JAVA经过两轮面试还能被刷吗_云从科技JAVA开发工程师面试:视频进行面试,前两轮技术面试 - 职朋职业圈...
  8. 2019年, image captioning论文汇总
  9. C++三大继承构造函数的执行顺序详解
  10. POJ 2182 Lost Cows [树状数组+二分]