Flash 平台技术的优化系列
文章平均质量分 80
wkyb608
这个作者很懒,什么都没留下…
展开
-
Flash 平台技术的优化(四) 事件模型与回调
考虑使用简单的回调代替事件模型。ActionScript 3.0 事件模型基于对象调度的概念。事件模型是面向对象的,可以进行优化以重复使用代码。dispatchEvent() 方法循环访问侦听器列表,并对各个注册的对象调用事件处理函数方法。然而,事件模型的一个缺点是可能要在应用程序的生存期内创建许多对象。假设您必须从时间轴调度一个事件来指示动画序列的末尾。要实现此通知,您可以从时间轴中的特定帧调度一个事件,如以下代码所示:dispatchEvent( new Event ( Event.COMP原创 2010-10-31 21:11:00 · 702 阅读 · 0 评论 -
运行时代码执行基本原理
了解如何改进应用程序性能的关键是了解 Flash Platform 运行时如何执行代码。运行时在一个循环中运行,其中某些操作是针对每个“帧”发生的。在这种情况下,帧只是由为应用程序指定的帧速率决定的一段时间。分配给每个帧的时间直接对应于帧速率。例如,如果指定帧速率为 30 帧/秒,则运行时会尝试使每个帧的执行时间为三十分之一秒。 可以在创作应用程序时指定初始帧速率。可以使用 Ado转载 2011-10-26 18:02:55 · 749 阅读 · 0 评论 -
getChildAt与getChildByName效率比较
getChildAt() 方法比getChildByName() 方法快。getChildAt() 方法从缓存数组中访问子项,而getChildByName() 方法则必须遍历链接的列表来访问子项。原创 2011-10-24 16:43:49 · 1822 阅读 · 0 评论 -
Flash 平台技术的优化(十四) 冻结和解冻对象
<br />使用 REMOVED_FROM_STAGE 和 ADDED_TO_STAGE 事件正确冻结和解冻对象。<br />要优化您的代码,请始终冻结和解冻您的对象。冻结和解冻对所有对象都很重要,但对显示对象尤其重要。即使显示对象不再位于显示列表中并正在等待作为垃圾回收,其代码仍然占用大量 CPU。例如,它们仍然在使用 Event.ENTER_FRAME。因此,使用 Event.REMOVED_FROM_STAGE 和 Event.ADDED_TO_STAGE 事件正确冻结和解冻对象非常关键。以下示例原创 2010-11-25 11:04:00 · 1147 阅读 · 0 评论 -
Flash 平台技术的优化(十三) 呈现文本对象
使用位图缓存功能和 opaqueBackground 属性可提高文本呈现性能。Flash Player10 中的新文本引擎提供了一些出色的优化功能。但是,需要使用许多类才能显示单个文本行。为此,使用TextLine 类创建可编辑的文本字段需要大量内存和许多行 ActionScript 代码。TextLine 类最适合静态文本和不可编辑的文本,它们能够以更快的速度呈现并占用更少的内存。借助位图缓存功能,您可以将矢量内容缓存为位图来提高呈现性能。此功能对于复杂矢量内容以及需要进行处理才能呈现的文本内容都原创 2010-11-03 10:20:00 · 551 阅读 · 0 评论 -
Flash 平台技术的优化(十二) 减少alpha透明度的使用
提高性能的另一种方式是删除alpha透明度的使用,在绘制透明度位图图像的时候,Alpha 透明度增加了 Flash Player 的负荷,您可以使用 opaqueBackground 属性指定背景颜色来避免此情况原创 2010-11-03 10:01:00 · 744 阅读 · 0 评论 -
Flash 平台技术的优化(十一) 关于性能方面的其他优化
对于 TextField 对象,请使用 appendText() 方法,而不要使用 += 运算符。当使用 TextField 类的 text 属性时,请使用 appendText() 方法,而不是 += 运算符。使用 appendText() 方法可改进性能。例如,以下代码使用 += 运算符,循环需要 1120 毫秒才能完成:addChild ( myTextField );myTextField.autoSize = TextFieldAutoSize.LEFT;var started:N原创 2010-11-02 09:42:00 · 589 阅读 · 0 评论 -
Flash 平台技术的优化(十) 处理像素
使用 setVector() 方法绘制像素。当绘制像素时,使用 BitmapData 类的相应方法即可进行一些简单优化。快速绘制像素的一种方式是使用 Flash Player 10 中引入的 setVector() 方法:// Image dimensionsvar wdth:int = 200;var hght:int = 200;var total:int = wdth*hght;// Pixel colors Vectorvar pixels:Vector. = new Vec原创 2010-11-01 10:35:00 · 659 阅读 · 0 评论 -
Flash 平台技术的优化(八) 绘图 API
使用绘图 API 可加快代码执行。Flash Player 10 提供了一个新的绘图 API,使用它可获得更好的代码执行性能。此新的 API 不提供呈现性能改进,但是可以大大减少必须编写的代码行数。代码行越少, ActionScript 执行性能越好。此新绘图 API 包含下列方法:• drawPath()• drawGraphicsData()• drawTriangles()注: 本讨论不会重点介绍 drawTriangles() 方法,此方法与 3D 有关。但是,此方法可以改进原创 2010-11-01 10:12:00 · 557 阅读 · 0 评论 -
Flash 平台技术的优化(六) 计时器与 ENTER_FRAME 事件
根据内容是否为动画,选择计时器或 ENTER_FRAME 事件。对于执行时间太长的非动画内容,优先选择计时器,而不是 Event.ENTER_FRAME 事件。在 ActionScript 3.0 中,有两种方法可以特定的间隔调用函数。第一种方法是使用由交互式对象 (InteractiveObject) 调度的Event.ENTER_FRAME 事件。第二种方法是使用计时器。ActionScript 开发人员通常使用 ENTER_FRAME 事件方法。需要对每个帧调度 ENTER_FRAME 事件。原创 2010-11-01 09:55:00 · 1622 阅读 · 0 评论 -
Flash 平台技术的优化(五) 禁用鼠标交互
尽可能考虑禁用鼠标交互。使用交互式对象(例如 MovieClip 或 Sprite 对象)时, Flash Player 执行本机代码以检测和处理鼠标交互。当屏幕上显示许多交互式对象时,特别是当它们重叠时,检测鼠标交互可能会占用大量 CPU 资源。避免此处理的一种简便方法是对不需要任何鼠标交互的对象禁用鼠标交互。以下代码说明了 mouseEnabled 和 mouseChildren 属性的用法:// Disable any mouse interaction with this Interacti原创 2010-11-01 09:41:00 · 1001 阅读 · 0 评论 -
Flash 平台技术的优化(七) Vector 类和 Array 类
尽可能使用 Vector 类而不是 Array 类。Flash Player 10 引入了 Vector 类,其读写访问速度比 Array 类快。一个简单的基准就可说明 Vector 类与 Array 类相比的优势所在。以下代码显示 Array 类的基准:var coordinates:Array = new Array();var started:Number = getTimer();for (var i:int = 0; i{coordinates[i] = Math.ra原创 2010-11-01 10:08:00 · 647 阅读 · 0 评论 -
Flash 平台技术的优化(三) 文本对象和内存
将新文本引擎用于只读文本;将 TextField 对象用于输入文本。Flash Player 10 引入了一个功能强大的新文本引擎 flash.text.engine (FTE),该引擎可以节省系统内存。但是, FTE 是一个低级 API,要求在其上使用其他 ActionScript 3.0 层。对于只读文本,最好使用新文本引擎,它占用较少的内存并提供更好的呈现效果。对于输入文本,最好使用 TextField 对象,因为在创建典型行为(例如,输入处理和自动换行)时需要的 ActionSc原创 2010-10-31 21:07:00 · 625 阅读 · 0 评论 -
Flash 平台技术的优化(二) 节省内存
节省内存 对于应用程序(尤其桌面应用程序)开发一直非常重要。然而,内存的使用量对移动设备来说非常重要,因此有必要限制应用程序占用的内存量。显示对象选择适当的显示对象。ActionScript 3.0 包含很多显示对象。要限制内存用量,最简单的优化技巧之一是使用合适类型的显示对象。对于非交互式简单形状,请使用 Shape 对象。对于不需要时间轴的交互式对象,请使用 Sprite 对象。对于使用时间轴的动画,请使用MovieClip 对象。应始终为应用程序选择最有效的对象类型。以下原创 2010-10-31 20:42:00 · 1072 阅读 · 0 评论 -
Flash 平台技术的优化(一) 运行时代码执行基本原理
了解如何改进应用程序性能的关键是了解 Flash 平台运行时如何执行代码。运行时在一个循环中运行,其中某些操作是针对每个“ 帧” 发生的。在这种情况下,帧只是由为应用程序指定的帧速率决定的一段时间。分配给每个帧的时间直接对应于帧速率。例如,如果指定帧速率为 30 帧/ 秒,则运行时会尝试使每个帧的执行时间为三十分之一秒。可以在创作应用程序时指定初始帧速率。可以使用 Adobe® Flash® Builder™ 或 Flash Professional 中的设置来设置帧速率。还可以在代码中指定原创 2010-10-31 19:20:00 · 929 阅读 · 0 评论 -
Flash 平台技术的优化(九) 事件捕获和冒泡
使用事件捕获和冒泡可以最大程度地减少事件处理函数。ActionScript 3.0 中的事件模型引入了事件捕获和事件冒泡的概念。利用事件冒泡可帮助您优化 ActionScript 代码执行时间。您可以在一个对象(而不是多个对象)上注册事件处理函数以提高性能。例如,想象创建这样一种游戏,在该游戏中用户必须以最快的速度单击苹果以将其销毁。该游戏将删除屏幕上各个被击中的苹果并为用户增加分数。要侦听由各个苹果调度的MouseEvent.CLICK 事件,您可能会编写以下代码:const MAX_NUM:in原创 2010-11-01 10:19:00 · 581 阅读 · 0 评论 -
Flash 平台技术的优化: 事件捕获和冒泡
使用事件捕获和冒泡可以最大程度地减少事件处理函数。ActionScript 3.0 中的事件模型引入了事件捕获和事件冒泡的概念。利用事件冒泡可帮助您优化 ActionScript 代码执行时间。您可以在一个对象(而不是多个对象)上注册事件处理函数以提高性能。例如,想象创建这样一种游戏,在该游戏中用户必须以最快的速度单击苹果以将其销毁。该游戏将删除屏幕上各个被击中的苹果并为用户增加分数。要侦听由原创 2011-10-27 15:16:10 · 537 阅读 · 0 评论