as3.0显示对象类结构
来源:互联网 发布:淘宝的在线客服在哪里 编辑:程序博客网 时间:2024/05/22 13:17
as3.0显示对象类结构
先给两张图对比一下
[img=http://img.bbs.csdn.net/upload/201512/26/1451116222_769971.jpg][/img]
[img=http://img.bbs.csdn.net/upload/201512/26/1451116202_988338.jpg][/img]
20.1 什么是显示对象
在舞台上显示的对象,在AS3中统一被称为显示对象(Display Object)
显示对象除了包含能看得见的显示对象外,也包括不能看见但却真实存在的显示对象容器(Display Object Container)
20.1.1 ActionScript3 中显示对象等级结构
舞台(Stage)
当前SWF(文档类或MainTimeline)
容器
显示对象
20.1.2 显示列表:显示对象模型
AS3中所有显示对象归使用显示列表(Display List)的方式进行管理,只有在列表中列出的对象才会在舞台上显示。
显示对象有两种:在显示列表中(on-list)和不在显示列表中(off-list),在显示列表中的对象会被渲染,不在显示列表中的对象依然存在,不被渲染罢了。
20.2 ActionScript3中显示对象的种类
20.1 ActionScript2中的MovieClip
MovieClip是万能的,但缺点是一旦创建,就拥有了一大堆时间轴等属性,非常浪费资源,有时候只将它作为空白容器。
MovieClip的地位在AS3中减弱了很多。
20.2.2 ActionScript3显示对象种类划分:一个统一、两个层次
一个统一,AS3中所有显示对象都统一于DisplayObject类
第一大层次:是否可以接受互动事件,可以接受的,称为 可互动的显示对象(InteractiveObject);
不可以交互的,称为非互动显示对象.
可互动的显示对象(InteractiveObject):指能够接受鼠标单击、键盘敲击等人机交互事件。
位图、形状、视频等就不能接受这些事件,所以归入不可以交互类。
第二大层次:是否可以作为容器,可以容纳其它显示对象的,称为 显示对象容器(Display Object Container)
20.3 显示对象类库架构
以下很好反映了 一个统一、两个层次 这个概念
所有显示对象都是继承自父类DisplayObject这个抽象类,而父类DisplayObject则继承自EventDispatcher类,
说明所有显示对象都能发送事件。
DisplayObject、InteractiveObject、DisplayObjectContainer是显示对象架构中的三个核心对象,
它们都是不能被实例化的抽象类
视觉架构类图:
EventDispatcher(事件类)
|
|
根类 DisplayObject(抽象类,不允许实例化,只能实例化子类)
|
|
InteractiveObject(可以交互) --------- (不可以交互) |---- Bitmap(位图) - Shape(容器)
| | Video(视频) - AVM1Movie(AS1.0 2.0影片)
| L [StaticText(静态文本框)* - MorphShape(形状补间)*]
| 有*的为必须在舞台上手动创建
|
|
DisplayObjectContainer(可以作为容器) --------- (不可以作为容器) [SimpleButton(简单按钮) - TextField(文本框)]
|
|
|
Sprite(简单容器,简化版MovieClip) --------- Stage(舞台) - Loader(加载)
|
|
|----------------------- mx.core.FlexSprite - mx.core.UIComponent(Flex)
|
|
|--------- MovieClip(影片剪辑)
|
|
L mx.flash.UIMovieClip
20.3.1 InteractiveObject类和非InteractiveObject类
InteractiveObject类 可以接受人机交互事件
非InteractiveObject类 不可以接受人机交互事件
不可以接受人机交互事件的类中有6个同级对象 :
AVM1Movie、Bitmap、MorphShape、Shape、StaticText、Video
其中再细分 MorphShape 和 StaticText不可以用代码创建
StaticText是Flash编辑环境下用文本工具创建的
MorphShape是在flash中创建形状渐变时自动生成的
AVM1Movie: Actionscript Virtual Machine1(ActionScript虚拟机1),即使用AS1.0 AS2.0创建的Flash影片,
为了向下兼容,当载入使用以上版本AS创建的影片时,会自动创建这个类,以同AVM2区分开来。
20.3.2 容器类和非容器类
第二层是InteractiveObject类的对象
包含三类,使用容器与非容器的概念来区分。
容器:可以在它里面加载其它的DisplayObject的容器
非容器对象:TextField、SimpleButton
TextField就是动态文本框
SimpleButton是Flash API
剩下的就是DisplayObjectContainer(显示对象容器)类,其下有:
Sprite、Loader、Stage
Stage是舞台类
Loader是原有MovieClip中加载外部资源的方法集合。
20.3.3 Sprite 和 MovieClip
Sprite将是我们在AS3中接触最多的容器,可以把它理解成去掉时间轴的MovieClip。
Sprite中含有Graphic对象,可以像MovieClip那样直接在自身绘图,但Sprite不同于Shape,
区别在于Sprite是容器,而Shape不是。
MovieClip是Sprite的子类,只保留了一些与时间轴控制相关的gotoAndStop方法和currentFrame属性等。
20.3.4 非Flash API的几个显示对象类
需要在Flex中使用到的显示对象,必须是UIComponent类的子类或实现IUIComponent的接口(Interface)
20.4 ActionScript3 视觉架构的优越性
20.4.1 更高效的渲染,更好的内存利用
AS3中影片剪辑被弱化成
绘制矢量使用轻量的Shape对象,
需要容器使用轻量的Sprite对象,
降低了时间轴的使用,也同时降低了内存的浪费。
20.4.2 自动化的深度管理
AS3中的显示对象深度由程序自动管理。
每个DisplayObjectContainer实例都有numChildren属性,用于显示对象容器中的子对象数目
显示对象容器列表中对象的索引从0开始,到numChildren-1
20.4.3 完整遍历显示列表
在AS3中,可以访问显示列表中的所有对象,包括使用ActionScript创建的对象及在IDE中绘制的对象。
20.4.4 列表外的显示对象
只有在显示列表中的对象才会被显示在舞台上,添加到显示列表的方法是调用addChild()或addChildAt()
================================================
第21章 DisplayObject类与矢量图、位图
================================================
21.1.1 显示对象的可视属性列表
AS3中所有原有对象的属性前面的下划线都去掉了,直接使用字母 ,比如 _x _y _alpha 之类变成x y alpha
注意的是:
scaleX scaleY alpha 之类原来0-100的值,在AS3中变成了0-1,其中的百分比使用小数
显示对象基本有11个可视属性(共有25个):
x、y、width、height、scaleX、scaleY、mouseX、mouseY、rotation、alpha、visible
21.1.2 显示对象的其它属性
显示对象除了11个可视属性外,还有5个常用属性和9个不太常用的属性。
除此之外,DisplayObject还拥有6个实例方法,能发出6种事件。
5个常用属性:
name: 显示对象名字,与AS2不同的是,创建对象时,name会自动分配
parent: 父容器,指向显示列表的父容器,当显示对象不在显示列表中时,该属性为null
root: 返回当前SWF主类的实例引用。
stage: 舞台
mask: 遮罩,指向用来遮罩的对象。
21.2 所有显示对象的抽象父类:DisplayObject类
DisplayObject类是一个不能被实例化的抽象类,也不能创建直接继承DisplayObject的子类,而只能继承自DisplayObject具体子类
DisplayObject类具有7个子类,分成两类,一类是InteractiveObject抽象类,
另一类是非InteractiveObject类的六个具体类,这六个类都是直接继承自DisplayObject类,不是InteractiveObject的子类,
因此不能接受鼠标事件,也不会发出人机交互事件。
21.3 矢量图
Shape类是最简单的DisplayObject类型,与父类不同的是它多了一个graphics的实例属性,这个属性持有Graphics类对象的引用。
21.3.1 Graphics对象
Graphics对象只能由AS3内建的显示对象创建并调用,所有的矢量图形代码绘制均使用它创建。
Graphics对象并不是显示对象类,而是直接继承自根类Object。也没法用代码创建Graphics对象。
Graphics对象绘制方法分类(详细见P341 或帮助 flash.display > Graphics 相关方法属性)
使用代码绘图时,一般遵从顺序:设置线头样式、填色、移动绘画点、画线或绘制图形、结束填色(endFill())。
设置线头样式、填色都是可选的。
只要含有Graphics的显示对象都可以绘制矢量图。
AS3中拥有Graphics对象的DisplayObject子类有3个:Shape、Sprite、MovieClip,Shape只支持纯矢量图,Sprite可以容纳矢量图与其它对象。
21.3.2 绘制矢量图的例子
var 显示对象:Shape = new Shape();
显示对象.graphics.beginFill(0xff0000);
显示对象.graphics.drawCircle(100,100,40);
显示对象.graphics.endFill();
addChild(显示对象);
本文转载自http://blog.sina.com.cn/s/blog_6f46a6ca0101b2d8.html,感谢博主分享!!!!
先给两张图对比一下
[img=http://img.bbs.csdn.net/upload/201512/26/1451116222_769971.jpg][/img]
[img=http://img.bbs.csdn.net/upload/201512/26/1451116202_988338.jpg][/img]
20.1 什么是显示对象
在舞台上显示的对象,在AS3中统一被称为显示对象(Display Object)
显示对象除了包含能看得见的显示对象外,也包括不能看见但却真实存在的显示对象容器(Display Object Container)
20.1.1 ActionScript3 中显示对象等级结构
舞台(Stage)
当前SWF(文档类或MainTimeline)
容器
显示对象
20.1.2 显示列表:显示对象模型
AS3中所有显示对象归使用显示列表(Display List)的方式进行管理,只有在列表中列出的对象才会在舞台上显示。
显示对象有两种:在显示列表中(on-list)和不在显示列表中(off-list),在显示列表中的对象会被渲染,不在显示列表中的对象依然存在,不被渲染罢了。
20.2 ActionScript3中显示对象的种类
20.1 ActionScript2中的MovieClip
MovieClip是万能的,但缺点是一旦创建,就拥有了一大堆时间轴等属性,非常浪费资源,有时候只将它作为空白容器。
MovieClip的地位在AS3中减弱了很多。
20.2.2 ActionScript3显示对象种类划分:一个统一、两个层次
一个统一,AS3中所有显示对象都统一于DisplayObject类
第一大层次:是否可以接受互动事件,可以接受的,称为 可互动的显示对象(InteractiveObject);
不可以交互的,称为非互动显示对象.
可互动的显示对象(InteractiveObject):指能够接受鼠标单击、键盘敲击等人机交互事件。
位图、形状、视频等就不能接受这些事件,所以归入不可以交互类。
第二大层次:是否可以作为容器,可以容纳其它显示对象的,称为 显示对象容器(Display Object Container)
20.3 显示对象类库架构
以下很好反映了 一个统一、两个层次 这个概念
所有显示对象都是继承自父类DisplayObject这个抽象类,而父类DisplayObject则继承自EventDispatcher类,
说明所有显示对象都能发送事件。
DisplayObject、InteractiveObject、DisplayObjectContainer是显示对象架构中的三个核心对象,
它们都是不能被实例化的抽象类
视觉架构类图:
EventDispatcher(事件类)
|
|
根类 DisplayObject(抽象类,不允许实例化,只能实例化子类)
|
|
InteractiveObject(可以交互) --------- (不可以交互) |---- Bitmap(位图) - Shape(容器)
| | Video(视频) - AVM1Movie(AS1.0 2.0影片)
| L [StaticText(静态文本框)* - MorphShape(形状补间)*]
| 有*的为必须在舞台上手动创建
|
|
DisplayObjectContainer(可以作为容器) --------- (不可以作为容器) [SimpleButton(简单按钮) - TextField(文本框)]
|
|
|
Sprite(简单容器,简化版MovieClip) --------- Stage(舞台) - Loader(加载)
|
|
|----------------------- mx.core.FlexSprite - mx.core.UIComponent(Flex)
|
|
|--------- MovieClip(影片剪辑)
|
|
L mx.flash.UIMovieClip
20.3.1 InteractiveObject类和非InteractiveObject类
InteractiveObject类 可以接受人机交互事件
非InteractiveObject类 不可以接受人机交互事件
不可以接受人机交互事件的类中有6个同级对象 :
AVM1Movie、Bitmap、MorphShape、Shape、StaticText、Video
其中再细分 MorphShape 和 StaticText不可以用代码创建
StaticText是Flash编辑环境下用文本工具创建的
MorphShape是在flash中创建形状渐变时自动生成的
AVM1Movie: Actionscript Virtual Machine1(ActionScript虚拟机1),即使用AS1.0 AS2.0创建的Flash影片,
为了向下兼容,当载入使用以上版本AS创建的影片时,会自动创建这个类,以同AVM2区分开来。
20.3.2 容器类和非容器类
第二层是InteractiveObject类的对象
包含三类,使用容器与非容器的概念来区分。
容器:可以在它里面加载其它的DisplayObject的容器
非容器对象:TextField、SimpleButton
TextField就是动态文本框
SimpleButton是Flash API
剩下的就是DisplayObjectContainer(显示对象容器)类,其下有:
Sprite、Loader、Stage
Stage是舞台类
Loader是原有MovieClip中加载外部资源的方法集合。
20.3.3 Sprite 和 MovieClip
Sprite将是我们在AS3中接触最多的容器,可以把它理解成去掉时间轴的MovieClip。
Sprite中含有Graphic对象,可以像MovieClip那样直接在自身绘图,但Sprite不同于Shape,
区别在于Sprite是容器,而Shape不是。
MovieClip是Sprite的子类,只保留了一些与时间轴控制相关的gotoAndStop方法和currentFrame属性等。
20.3.4 非Flash API的几个显示对象类
需要在Flex中使用到的显示对象,必须是UIComponent类的子类或实现IUIComponent的接口(Interface)
20.4 ActionScript3 视觉架构的优越性
20.4.1 更高效的渲染,更好的内存利用
AS3中影片剪辑被弱化成
绘制矢量使用轻量的Shape对象,
需要容器使用轻量的Sprite对象,
降低了时间轴的使用,也同时降低了内存的浪费。
20.4.2 自动化的深度管理
AS3中的显示对象深度由程序自动管理。
每个DisplayObjectContainer实例都有numChildren属性,用于显示对象容器中的子对象数目
显示对象容器列表中对象的索引从0开始,到numChildren-1
20.4.3 完整遍历显示列表
在AS3中,可以访问显示列表中的所有对象,包括使用ActionScript创建的对象及在IDE中绘制的对象。
20.4.4 列表外的显示对象
只有在显示列表中的对象才会被显示在舞台上,添加到显示列表的方法是调用addChild()或addChildAt()
================================================
第21章 DisplayObject类与矢量图、位图
================================================
21.1.1 显示对象的可视属性列表
AS3中所有原有对象的属性前面的下划线都去掉了,直接使用字母 ,比如 _x _y _alpha 之类变成x y alpha
注意的是:
scaleX scaleY alpha 之类原来0-100的值,在AS3中变成了0-1,其中的百分比使用小数
显示对象基本有11个可视属性(共有25个):
x、y、width、height、scaleX、scaleY、mouseX、mouseY、rotation、alpha、visible
21.1.2 显示对象的其它属性
显示对象除了11个可视属性外,还有5个常用属性和9个不太常用的属性。
除此之外,DisplayObject还拥有6个实例方法,能发出6种事件。
5个常用属性:
name: 显示对象名字,与AS2不同的是,创建对象时,name会自动分配
parent: 父容器,指向显示列表的父容器,当显示对象不在显示列表中时,该属性为null
root: 返回当前SWF主类的实例引用。
stage: 舞台
mask: 遮罩,指向用来遮罩的对象。
21.2 所有显示对象的抽象父类:DisplayObject类
DisplayObject类是一个不能被实例化的抽象类,也不能创建直接继承DisplayObject的子类,而只能继承自DisplayObject具体子类
DisplayObject类具有7个子类,分成两类,一类是InteractiveObject抽象类,
另一类是非InteractiveObject类的六个具体类,这六个类都是直接继承自DisplayObject类,不是InteractiveObject的子类,
因此不能接受鼠标事件,也不会发出人机交互事件。
21.3 矢量图
Shape类是最简单的DisplayObject类型,与父类不同的是它多了一个graphics的实例属性,这个属性持有Graphics类对象的引用。
21.3.1 Graphics对象
Graphics对象只能由AS3内建的显示对象创建并调用,所有的矢量图形代码绘制均使用它创建。
Graphics对象并不是显示对象类,而是直接继承自根类Object。也没法用代码创建Graphics对象。
Graphics对象绘制方法分类(详细见P341 或帮助 flash.display > Graphics 相关方法属性)
使用代码绘图时,一般遵从顺序:设置线头样式、填色、移动绘画点、画线或绘制图形、结束填色(endFill())。
设置线头样式、填色都是可选的。
只要含有Graphics的显示对象都可以绘制矢量图。
AS3中拥有Graphics对象的DisplayObject子类有3个:Shape、Sprite、MovieClip,Shape只支持纯矢量图,Sprite可以容纳矢量图与其它对象。
21.3.2 绘制矢量图的例子
var 显示对象:Shape = new Shape();
显示对象.graphics.beginFill(0xff0000);
显示对象.graphics.drawCircle(100,100,40);
显示对象.graphics.endFill();
addChild(显示对象);
本文转载自http://blog.sina.com.cn/s/blog_6f46a6ca0101b2d8.html,感谢博主分享!!!!
0 0
- as3.0显示对象类结构
- AS3.0中有关显示对象类的类总结
- [AS3]对象显示
- AS3显示对象复制
- AS3 显示对象容器
- AS3.0 几何结构 Point对象和Rectangle对象
- as3遍历当前显示对象
- AS3.0对象复制
- AS3 对象池类
- as3 各显示对象的层级关系
- AS3中显示对象层级的控制
- as3 各显示对象的层级关系
- AS3.0基础学习笔记(3): 认识类结构
- ActionScript3(AS3)类库学习之(十)——DisplayObject等显示对象基类
- AS3.0教程(外1):如何移除容器下所有子显示对象?
- AS3如何移除容器下所有子显示对象
- as3 测试各个显示对象占用内存的大小
- 用AS3清空容器下所有子显示对象
- 使用spring+jedis-2.5.2.jar开发redis应用
- cocos.py 2.0 - cocos console: cocos 2d-x.....Traceback (most recent call last)
- kafka系列教程4(服务器端实践)
- gcc的基本操作
- android随笔10——自定义插入器
- as3.0显示对象类结构
- spring注解方式自动注入接口的实现子类
- Mysql主从复制
- kafka系列教程5(客户端实践)
- [精]Oracle APEX 5.0 新手教程(三) 动态控制
- leetcode:92. Reverse Linked List II(Java)解答
- windows64位系统安装redis教程
- UISegmentedControl分段控制器
- Android使用systembartint库实现沉浸式状态栏效果