flash和flex虽然都是基于as3的ide,但区别还是很大的,要想百战百胜必然要了解其内部运行机制.搜一篇不错的文章.
原文地址:http://www.cnblogs.com/raywalker/archive/2010/12/21/1912235.html
一. 执行基本原理
Flash平台运行时在一个循环中执行,它以划分的“帧”为单位进行处理。于是帧速率即对应着分配给每个帧的时间,如指定帧速率为20帧/秒,则运行时会尝试对每个帧执行1/20秒。即使在时间轴上不存在可以多个帧,单一帧所表现的SWF内容也会被周期性地进行处理。 帧的执行又可划分为2个阶段:
(1)ActionScript 代码的执行(经由 ActionScript Virtual Machine)
(2)显示对象(DisplayObject)的呈现
如果需要执行的代码是要进行比较耗费CPU的密集型计算,那么以上Idle的空闲时间就会被占用掉。帧之间需要用作画图呈现的时间就会被延长,相应的回放帧的速率就会变慢:
因为ActionScript中没有提供多线程的机制进行处理,此时代码运行以及界面绘图的任务需要在单一线程中完成。实际上Actionscript 把耗费CPU的计算分成了各个更小而且独立的段,使之在跨越多个帧的时候也能独立执行。在划分的各个段之间就可以重绘呈现出界面,使后续帧的播放不受打断:
二. 性能优化措施
(1) ActionScript3的资源管理
Grant Skinner 在其Blog的AS3资源管理系列文章中已经较为详细的介绍了FlashPlayer的GC工作原理,以及资源管理时可能出现的问题等。强烈推荐感兴趣的园友可以仔细研究下。
(2)性能改进的办法
1. 利用FlashBuilder的Profile工具发现瓶颈的区域。
2. 重用对象
在涉及到不断重复使用对象时,考虑利用对象池处理。在初始化阶段先创建一定数量的对象并将其存储到一个容器(Array / Vector)对象中。在对象完成操作后,可清除对象的相互引用防止其仍然执行占用CPU(注意不要将对象的引用置为null)。然后把对象放入池中,再次用到时直接从池中检索即可。
3. 注册事件监听器时利用弱引用
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false)
4. 移除已经注册的对应的事件监听器。
5. 自定义的显示对象在重绘之前对引用到的Graphics调用clear()方法,清除先前所画的部分。
<script type="text/javascript"></script>
分享到:
相关推荐
控制器的设计与优化对系统的整体性能至关重要。控制器可能包含硬件逻辑,也可能包含固件,如Firmware,用于执行特定的Flash管理功能。开发者需要熟悉控制器的工作原理,理解其与Linux内核的交互方式,以便编写或修改...
- MAM:存储器加速模块,优化内存访问性能。 - VIC:向量中断控制器,负责管理和调度中断请求。 - SPI:全双工串行接口,用于设备间通信。 - CAN:控制器局域网,用于车辆和工业自动化中的高速通信。 - PWM:...
电路分析对于理解硬件工作原理至关重要,通过分析电流、电压和功率的关系,可以设计和优化电路性能。 【芯片原理】 芯片是硬件的核心,包括微处理器、存储器芯片、控制器等。CPU的内部结构,如控制单元、算术逻辑...
4. **实时性和效率优化**:了解如何优化代码以满足实时性能要求,减少资源消耗。 5. **调试工具与技巧**:学会使用IDE、仿真器、逻辑分析仪等工具进行调试。 再者,笔记可能包含硬件设计部分: 1. **电路设计基础...
资料收集包括但不限于官方数据手册、应用笔记、开发板文档、开源驱动代码等,这些都能帮助开发者更好地理解和掌握SPI Flash驱动的开发。 总之,SPI Flash驱动的开发涉及硬件接口配置、SPI协议操作、驱动程序设计和...
这份"嵌入式Linux应用程序开发笔记-代码.zip"资源显然是为那些希望深入理解该领域的学生或工程师准备的,特别适用于毕业设计和课程设计任务。 在嵌入式Linux应用开发中,开发者需要掌握以下关键知识点: 1. **...
- **统计代码运行时间**:学会使用CCS提供的性能分析工具来评估代码效率,这对于优化代码至关重要。 #### 四、F2812的资源 - **片内资源**:F2812的内部资源包括RAM、ROM、Flash等,理解这些资源的分配方式有助于...
在代码运行阶段,使用断点功能可以在特定位置暂停程序,以便观察变量状态、跟踪调用栈或逐步执行代码。这对于查找和修复逻辑错误非常有用。此外,还可以利用内存查看器检查Flash和RAM中的数据,以及使用外设模拟器...
通过深入研究Flash相册2的源码,开发者不仅可以了解如何构建一个功能齐全的Flash相册,还可以学习如何优化性能、处理用户输入和响应事件,以及如何将Flash内容集成到网页中。尽管现代Web开发趋势已转向更现代的技术...
这篇学习笔记将深入探讨这两个技术,并通过实例代码解析它们的工作原理。 Flex是Adobe开发的一个开源框架,主要用于创建交互式、高性能的RIA,通常基于ActionScript编程语言和Flash Player或Adobe AIR运行时。Flex ...
2. 汇编语言编程:对于需要优化性能或直接控制硬件的场合,汇编语言是必要的选择。 五、典型应用 AVR单片机广泛应用于: 1. 电子设备:如智能家居控制系统、智能仪表、玩具等。 2. 工业控制:自动化设备、电机控制...
- **常见问题**:例如布局错位、性能优化等问题的解决方案。 #### 2.3 界面元素分析 - **自定义控件**:如何根据需求定制界面元素,提高用户体验。 - **样式调整**:调整控件的颜色、大小等属性,使其更加符合设计...
4. **时序约束**:了解时序约束有助于优化程序性能和调试。例如,使用`always`块时,要注意其顺序执行特性,以及如何正确应用阻塞和非阻塞赋值。不建议在多个`always`块中对同一变量赋值,这可能导致逻辑错误。 5. ...
- **代码运行时间统计**:通过CCS,开发者可以测量代码片段的执行时间,这对于优化程序性能非常有用。 #### 三、F2812的资源 - **片内资源**:F2812芯片包含多种内部资源,如RAM、ROM、Flash等。理解这些资源的...
- **统计代码运行时间**:利用CCS内置工具或自定义代码来测量特定部分的执行时间,这对于优化性能至关重要。 #### 四、F2812 的资源 - **片内资源**:概述F2812内部的各种资源,如CPU、内存、外设等。 - **CPU...
9. **优化与性能调整**:根据实际需求对系统进行优化,可能涉及任务优先级调整、内存分配策略改进、中断响应时间缩短等。 10. **文档记录**:整个移植过程中的笔记和文档非常重要,它们可以帮助理解和复现过程,为...