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)。增加了时间轴和时间轴控制功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值