DisplayObjectContainer 属性和方法 - vaney

时间:2024-02-18 12:58:47

DisplayObjectContainer 属性和方法

DisplayObjectContainer称为显示容器,是一类特殊的显示对象。做为显示对象,他本身也需要通过addChild()方法添加到显示列表后才能显示;做为一个容器,他内部可以包含其他的显示对象。DisplayObjectContainer包含Stage、Loader、Sprite、MovieClip。其中,Stage和DisplayObjectContainer是不可以实例化的。

      下面我介绍下DisplayObjectContainer常用的属性和方法:

     (1) mouseChildren

      设置对象的子项是否支持鼠标。默认值是true。在某些情况下,可能需要关闭显示对象和鼠标的交互,那么只要把这个值设置成false即可。

      (2) tabChildren

      设置对象的子项是否支持Tab键。默认也是true。如果需要关闭,那么将这个值设为false.

     (3) numChildren

      返回对象的子项个数。如果要遍历显示列表,这个是个不可或缺的属性。

      (4) addChild()、addChildAt()

      核心方法。添加显示对象到指定的显示容器中。

     (5) getChildAt()、getChildByName()

      核心方法。获取容器中的显示对象。推荐使用getChildAt(),因为getChildByName()比较影响性能。

     (6) removeChild()、removeChildAt()

      从容器中删除显示对象。但是如果该显示对象有其他引用,比如事件等。那么,该显示对象仅仅只是从显示列表中移除。如果是要彻底删除,请用delete命令。

     

      在所有的容器中,最大的那个容器自然是Stage了。在AS3.0中,“无法以全局方式访问Stage 对象。而是需要利用DisplayObject实例的stage属性进行访问。”这句话是官方帮助文档上的,明白什么意思不?呵呵。

      这句话其实是说:可以通过任何DisplayObject实例的stage属性来访问舞台。如果在简单点说,就是在AS2.0里,我们可以用类似Stage.scaleMode获取舞台信息,但AS3.0那样不可以了,需要用小写的stage.scaleMode获取了。哈哈,虽然差别就只是第一个字母的大小写,但是底层实现原理是完全不同了。不过我们可以不用去理解那么深,就只要知道把Stage改成stage就可以了。

      下面我简单介绍几个Stage的属性和方法:

      (1) width、height、stageWidth、stageHeight

      这几个属性,和AS2.0里有所不同。在AS2.0里,width和height直接返回舞台的宽度和高度,但在AS3.0里,只是返回显示对象的宽度和高度。在AS3.0里,如果需要舞台的宽度和高度,需要用到stageWidth、stageHeight(AS2.0没有,AS3.0新增)

     (2) displayState

      设置StageDisplayState.FULL_SCREEN进入全屏模式,设置StageDisplayState.NORMAL退出全屏模式。具体方法我以前有写过,这里就不多说了。

 

      (3)frameRate

      获取或设置舞台的帧频。在单一Flash中可能用不到,在多Flash中用来匹配动画进程(不过默认是会自动转换的)。当然最好还是开始就统一啦。

      (4) quality

      设置舞台质量,默认是HIGH。汗,我一直以为quality只有三档,HIGH、MEDIUM、LOW。看到HIGH上面还有一档BEST以为是AS3.0新增的。查了一下帮助文档才发现原来AS2.0就有四档了,晕晕。

      (5) scaleMode

      设置舞台缩放模式。一般都为NO_SCALE,可以激活resize事件,这样当屏幕尺寸改变时可以对舞台元件做相应的位置调整。