Flash Player渲染模型(显示列表)
显示列表是Flash Player 9以后才有的Flash渲染模型,这是一个非常重要的模型。那么为什么要彻底改变Flash对图形的操作方式呢?原因有两个:速度和简化。以前显示列表各个方面都是MovieClip。现在,编程人员可以根据需要选择适当的类,保持比较小的内存占有量并优化Player的性能。仅需要一个圆形?可以使用Shape对象。需要多帧?可以使用MovieClip。需要子对象但没有多帧的图形?则使用Sprite。
显示列表就是在运行期间,Flash图形渲染引擎在屏幕上渲染出的“树”状结构的图形对象,只有在显示列表中出现的显示对象才能在屏幕上出现。当显示对象从显示列表中移出后,它就不能在屏幕上显示。运行时的显示列表结构如图1-7所示。
(点击查看大图)图1-7 Flash运行期渲染的显示列表 |
在运行时,Flash如何从无到有构造出这样的树状显示列表呢?步骤如下:
1)Flash在首次加载SWF时会自动创建一个“舞台”(Stage)显示对象,然后自动将这个舞台对象加到显示列表中,如图1-8所示。
图1-8 创建并加载舞台对象到显示列表 |
2)查找SWF文件的主类,然后创建SWF文件主类的实例,并将SWF文件主类的实例作为舞台对象的第一个孩子添加到舞台对象的显示对象列表中,如图1-9所示。
图1-9 创建SWF文件主类的实例,并将其作为舞台实例的第一个孩子 |
3)SWF文件主类加载自己的显示列表中的显示对象,从而形成完整的显示列表。
总结上面有关显示列表的知识,有以下概念需要重点注意。
舞台(Stage)。舞台对象是所有图形化内容的最外层容器,是显示列表的根。舞台表示应用的主画图区,对于运行在浏览器中的SWF内容来说,舞台表示的是Flash内容被显示的整个区域,对于运行在RIA中的内容来说,每个NativeWindow对象都有一个相应的舞台对象。舞台不是全局对象,但是每个显示对象(DisplayObjcet)都有一个stage属性访问它所在的舞台。通过舞台对象可以全局性地控制整个显示区域的特性,比如:quality(图形质量)、scaleMode(缩放模式)、frameRate(帧频率)等。
SWF文件主类。每个SWF文件都有一个关联的ActionScript类,称为“SWF文件的主类(Main Class)”。当Flash Player在HTML页中打开SWF文件时,Flash Player将调用该类的构造函数,所创建的实例(始终是一种显示对象)将添加为Stage对象的子级。SWF 文件的主类必须是Sprite类的子类。不同的SWF生成工具创建SWF文件的主类方式不同,在Flash开发工具Flash CS中,主类被称为“文档类(document class)”,也就是主时间轴(main timeline)。
显示对象(DisplayObject)。在ActionScript中,应用程序屏幕上出现的所有元素都属于“显示对象”类型。flash.display包中包括的DisplayObject类是由许多其他类扩展的基类。这些不同的类表示一些不同类型的显示对象,如矢量形状、影片剪辑和文本字段等。图1-10列出了显示对象类之间的继承层次关系:
(点击查看大图)图1-10 显示对象类继承层次图 |
显示对象容器(DisplayObjectContainer)。显示对象容器是一些特殊类型的显示对象,这些显示对象除了自己有可见表示形式之外,还可以包含也是显示对象的子对象DisplayObjectContainer类(DisplayObject类的子类)。DisplayObjectContainer对象可以在其“子级列表”中包含多个显示对象。
显示列表是一个连接到DisplayObjectContainer的所有DisplayObject的列表。这表示对象一经添加就会访问舞台,并通过舞台来访问显示列表层级中的其他显示对象。所有DisplayObjectContainer对象(即所有可以成为DisplayObject父级的对象)都具有一个numChildren属性。所有DisplayObject也都具有一个parent属性,可以使用该属性来查找当前哪个部分包含该部分。
可交互对象(InteractiveObject)。所有能够通过鼠标和键盘与人进行交互的显示对象的抽象基类。
精灵(Sprite)。有拖拽功能和以按钮方式工作的特殊显示对象容器。Flex中的所有可视化组件都是这个类的子类。
视频剪辑对象(MovieClip)。增加了时间轴和时间轴控制功能。
Flash Player渲染模型(显示列表)相关推荐
- 借助 Adobe Scout 理解 Flash Player
原文链接 Adobe Scout 用于优化 Flash 内容,是一款极为强大的工具,因为它能让您看到 Flash Player 幕后正在发生的事情.但是若明白 Flash Player 为什么做这些事 ...
- Understanding Flash Player with Adobe Scout
Adobe Scout 是一款强大的Flash内存分析工具,可以观察到Flash Player后台正在运行的内容.从Adobe Scout上表现的内容,就可以知道Flash Player正在做什么.为 ...
- Adobe Flash Player 10 插件无法注册
故障描述:浏览网页时Flash无法正常显示.安装Adobe Flash Player 10 插件,提示"无法注册"! 故障处理过程: 进入安全模式,运行文章下面"unin ...
- Adobe Flash Player ActiveX 不能安装
这是一篇有普遍应用性和实际意义的文章,目的是为了解决计算机用户普遍遇到过并深感头疼的一个问题--"Adobe Flash Player ActiveX 不能安装". 具体原因和发生 ...
- Adobe Flash Player ActiveX 不能安装的解决方法
这是一篇有普遍应用性和实际意义的文章,目的是为了解决计算机用户普遍遇到过并深感头疼的一个问题--"Adobe Flash Player ActiveX 不能安装". 具体原因和发生 ...
- Fedora27 安装Adobe Flash Player PPAPI与NPAPI实现Firefox和Chromium视频播放
一.Adobe Flash Player PPAPI与NPAPI有什么区别 我们在打开网页视频时有时会弹出没有安装Flash插件的提示,此时就无法观看视频.Adobe Flash Player是浏览器 ...
- Chrome浏览器显示“Adobe flash player已过期”问题之解决
1 问题描述 最近办公室刚分给我一台新的台式电脑,于是我在其上的Win7系统上安装了我喜欢使用的chrome浏览器,版本为: 使用过程中发现一些网页的flash图片或者视频显示不出来,并且出现如下的提 ...
- flash中国官网显示可能损害计算机,重橙网络:Flash Player 中国官网最新版可解决使用异常的问题...
IT之家1月15日消息 今天,Adobe Flash Player 中国大陆地区独家战略合作伙伴重橙网络发布<关于微软删除内置Flash Player的公告>,称因微软删除内置Flash ...
- google浏览器显示Adobe Flash player过期的处理方法
完美解决问题的办法,在百度中输入 "adobe flash player debugger",如图进入官网 选择对应操作系统的对应版本,下载安装,重启浏览器,一切ok IE内核浏览 ...
最新文章
- Ubuntu 搜狗输入法不能输入中文解决
- input添加float样式后位置偏移的解决
- flowvisor 命令_mininet+FlowVisor+OpenDayLight环境搭建及实验一
- 数据预处理:读取文件数据,并存为python数组
- PHP酒店管理demo案例(数组遍历)
- nc 探测端口_防盗报警探测器的几种防拆接线方式,附接线图
- linux php版本升级_玩转Linux,介绍一个强大的Linux服务器管理面板,比宝塔更强...
- Git命令集十三——快照操作
- Android自定义控件学习(四)------创建一个视图类
- Java知识系统回顾整理01基础01第一个程序05Eclipse中运行Java程序
- ERP系统健康体检的三大指标
- 【转】java注解-最通俗易懂的讲解
- 什么是Robtos.txt 协议?
- 关于Matpower用于攻击检测仿真方法的文献摘录
- 如何进行多平台整合,实现数据变现?
- Stata中的单位根检验
- 方向键按键转发,模仿笔记本Fn按键
- 二阶系统临界阻尼和欠阻尼_如何使用开关阻尼器使机械键盘静音
- 《卓有成效的管理者》——学习心得(八)
- iOS设备唯一标识符解决方案