`

Flex进阶持续学习——性能优化

 
阅读更多

一. 参考资料

Performance-tuning Adobe AIR applications

Optimizing Adobe AIR for Code Execution, Memory & Rendering

Some ActionScript 3.0 Optimizations

Performance Tips for Adobe

Analyzing the size of the Flex framework (or why I hate the AdvancedDataGrid)

Best Practices for Performance

[官方文档] 优化Flash平台的性能 (中文,推荐)

Flex Performance Tips & Tricks (较新,含SDK4.5组件)

 

二. [优化Flash平台的性能] 笔记

综合:

1) 每个帧循环包括两个阶段、三部分:第一阶段(事件、enterFrame 事件)、第二阶段(呈现)。

2) 使用正值时,将舍入值转换为整数比使用 Math.floor() 方法快得多。

3) 可通过 Stage.frameRate 属性来查看帧速率。

4) 要降低代码大小,请避免使用Adobe. Flex. 框架、TLF 框架库或任何大型第三方 ActionScript 库。

 

1. 节省内存

1) 创建对象:

a) 正确选择ActionScript对象:

对于非交互式简单形 状,请使用 Shape 对象;

对于不需要时间轴的 交互式对象,请使用 Sprite 对象;

对于使用时间轴的动 画,请使用MovieClip 对象。

b) 使用 getSize() 方法为代码设置基准并确定任务的最有效对象。

c) 所有原始类型(String 除外)在内存中都是占用 4 – 8 个字节。使用特定类型的基元无法优化内存。

d) 尽可能重复使用对象并避免重新创建对象。

    尤其不要在循环中创建对象。重复使用 BitmapData 对象可以节省更多的内存。

        f) 对不断重复使用对象可以使用“对象池”技术。

    在初始化应用程序期间创建一定数量的对象并将其存储在一个池中,例如 Array 或 Vector 对象。

    对一个对象完成操作后,停用该对象以免它占用 CPU 资源,然后删除所有相互引用。

    然而,不要将引用设置为 null,这将使它符合垃圾回收条件。

    只需将该对象放回到池中,在需要新对象时可以对其进行检索。

 

2) 释放内存:

a) 删除对对象的所有引用以确保触发垃圾回收。

b) 当不再需要 BitmapData 对象时,要始终调用 dispose() 方法并将引用设置为 null,以便立即释放内存。

c) Flash Player 10.1 和 AIR 1.5.2 在 System 类中引入了一个名为 disposeXML() 的新方法。借助此方法,通过将 XML 树作为参数传递,可立即使 XML 对象可用于垃圾回收。

 

位图、滤镜:

a) 使用位图是优化呈现的一个好方法,因为 Flash Player 在屏幕上绘制像素需要的处理资源少于呈现矢量内容。

b) Flash Player 10.1 引入了一个适用于所有平台的新功能,称为 BitmapData 单个引用。

    从嵌入图像创建 BitmapData 实例时,将对所有 BitmapData 实例使用位图的同一版本。

    如果稍后修改位图,则在内存中为该位图提供其自身的唯一位图。

c) 避免使用滤镜,包括经过 Pixel Bender 处理的滤镜。

    将滤镜应用于显示对象时,Flash Player 将在内存中创建两个位图。

    最佳做法是,尽可能使用通过创作工具创建的位图来模拟滤镜。

d) 如果需要,使用 mip 映射功能缩放较大图像。

    Mip 映射功能仅适用于动态加载的图像或嵌入位图。Mip 映射不适用于经过过滤或缓存的显示对象。

    仅当位图的宽度和高度为偶数时才可以进行 mip 映射。当位图的宽度或高度为奇数时,mip 映射将停止。

    Flash Player 10.1 当前支持直接从原始源 mip 映射到所需的目标大小。

    尽量少用 mip 映射。尽管它可以改进缩小位图的品质,但它对带宽、内存和速度都有影响。

e) 向显示对象应用任何 3D 转换都需要内存中的两个位图:一个作为源位图,另一个作为经过透视转换的版本。

    尽量避免在移动应用程序中使用 3D 属性。

 

回调:

a) 考虑使用简单的回调代替事件模型。

 

2. 最大程度减少CPU 使用量:

a) Flash Player 10.1 引入了两个有助于减少 CPU 处理的新功能。一个功能是移动设备上的睡眠模式,另一个功能是当 SWF 内容位于屏幕之外时暂停和恢复该内容。

b) 使用 hasPriority HTML 参数可延迟加载位于屏幕之外的 SWF 文件。

c) 尽可能考虑禁用鼠标交互,这有助于应用程序使用较少的 CPU 处理,从而减少电池使用量。

d) 要节省 CPU 电量,请限制补间的使用,这可以节省 CPU 处理、内存并延长电池寿命。

 

1) 冻结和解冻对象:

a) 使用 REMOVED_FROM_STAGE 和 ADDED_TO_STAGE 事件正确冻结和解冻对象。

b) 如果将显示对象从显示列表中删除,则完成删除后将其引用设置为 null 不能确保该对象是冻结的。

    如果不运行垃圾回收器,则对象将继续占用内存和 CPU 处理,即使此对象不再显示。

    要确保对象占用的 CPU 处理最少,请确保在将其从显示列表中删除后完全将其冻结。

c) Flash Player 10 对Loader 类引入了一个重要的新方法,称为 unloadAndStop()。

    通过此方法,可以卸载 SWF 文件、自动冻结加载的 SWF 文件中的每个对象并强制运行垃圾回收器。

 

2) 激活和停用对象:

a) 使用 Event.ACTIVATE 和 Event.DEACTIVATE 事件检测后台是否处于非活动状态,并相应地优化应用程序。

b) activate 和 deactivate 事件能让您实现与有时在移动设备或上网本上提供的“ 暂停和恢复” 功能类似的机制。

 

3) 计时器与 ENTER_FRAME 事件:

a) 根据内容是否为动画,选择计时器或 ENTER_FRAME 事件。

b) 对于执行时间太长的非动画内容,优先选择计时器,而不是 Event.ENTER_FRAME 事件。

c) 计时器的行为与 ENTER_FRAME 事件的行为类似,但是调度事件无需考虑帧速率。

d) 将应用程序中 Timer 对象和注册的 enterFrame 处理函数的数量降至最少。

e) 如果使用的是 Timer 对象,将产生与从多个 Timer 对象创建和调度事件相关联的开销。

    如果必须在不同的时间间隔触发不同的操作,以下提供了一些建议的替代方法:

    根据其发生的频率,使用最少数量的 Timer 对象和组操作。

    使用一个 Timer 对象,并以 Timer 对象的 delay 属性时间间隔的倍数触发操作。

f) 停止未使用的 Timer 对象。

g) 在 enterFrame 事件或 Timer 处理函数中,尽量减少对可导致重绘屏幕的显示对象外观的更改。

 

4) ActionScript 3.0 性能

a) 尽可能使用 Vector 类而不是 Array 类。

    Flash Player 10 引入了 Vector 类,其读写访问速度比 Array 类快。

            通过为矢量分配特定长度并将其长度设为固定值,可进一步优化。

b) 使用绘图 API 可加快代码执行。

     Flash Player 10 提供了一个新的绘图 API,使用它可获得更好的代码执行性能。

     此新绘图 API 包含下列方法:drawPath(), drawGraphicsData(), drawTriangles()

            路径越复杂,使用 drawPath() 方法获得的性能越高。

c) 使用事件捕获和冒泡可以最大程度地减少事件处理函数。

d) 使用 setVector() 方法可以快速绘制像素(from Flash Player 10)。

    如果使用的是较慢的方法,如 setPixel() 或 setPixel32(),请使用 lock() 和 unlock() 方法加快运行速度,

    调用 lock() 和 unlock() 可防止屏幕进行不必要的更新,

    但如果处理的是位图(而不是显示列表)中的像素(双缓冲),有时该技术不会提高性能。

e) 遍历像素的方法(例如 getPixel()、getPixel32()、setPixel() 和 setPixel32())可能速度很慢,特别是在移动设备上。如果可能,请使用在一次调用中检索所有像素的方法。

要读取像素,请使用 getVector() 方法,它比 getPixels() 方法速度快。

尽可能使用依赖于 Vector 对象的 API,因为它们的运行速度可能更快。

f) 对于 TextField 对象,请使用 appendText() 方法,而不要使用 += 运算符。

g) 尽可能更新循环外的文本字段。

h) 尽可能避免使用中括号运算符。

i) 尽可能使用内联代码以减少代码中函数的调用次数。

   移动内联代码是优化代码以获得良好性能的一种好方法。

   以内联方式移动函数调用可使代码运行速度提高四倍以上。

   这种方法适用于多种情况,但要注意它对可重用性和可维护性的影响。

j) 避免计算循环中的语句。

   遍历数组时最好储存数组长度,而不要每次循环都计算长度。

k) 对 while 循环使用相反的顺序。

 

5) 正则表达式:

a) 使用 String 类方法(如 indexOf()、substr() 或 substring())代替正则表达式来实现基本字符串查找和提取。

b) 如果需要对元素进行分组,但不需要在结果中隔离该组的内容,请使用非捕获组(“(?:xxxx)”)代替正则表达式中的(“(xxxx)”)组。

c) 如果需要对元素进行分组,但不需要在结果中隔离该组的内容,请使用非捕获组(“(?:xxxx)”)代替正则表达式中的(“(xxxx)”)组。

   与使用标准组语法相比,使用非捕获组语法速度更快且占用的内存更少。

d) 如果某正则表达式执行性能很差,考虑使用其他正则表达式模式。

 

3. 呈现性能

1) 重绘区域

a) 构建项目时始终使用重绘区域选项。

    可以使用 flash.profiler.showRedrawRegions() 方法以编程方式启用此选项:

// Enable Show Redraw Regions
// Blue color is used to show redrawn regions
flash.profiler.showRedrawRegions ( true, 0x0000FF );

        b) 要改进性能:

            将隐藏的运行字符的 visible 属性设置为 false 或将其从显示列表中完全删除;

            还应该停止其时间轴。

2) 避免将内容放在后台。而是在需要时将对象放在显示列表中。

 

3) 影片品质

a) 使用适当的舞台品质设置可提高呈现性能。

    使用 StageQuality.MEDIUM 通常就可以为移动设备提供足够高的品质,但在某些情况下,使用 StageQuality.LOW 也可以提供足够高的品质。

    Flash Player 8 及更高版本可以精确呈现消除锯齿的文本,甚至将舞台品质设置为 LOW 也可以达到这种效果。

    在某些设备上, Flash Player 10.1 可自动切换到 StageQuality.MEDIUM 以提高性能。

b) 在将矢量绘制为位图前后切换舞台品质是一项功能强大的技术,可以在屏幕上获得消除锯齿的内容。无论最终舞台品质如何,此技术都有效。(但使用cacheAsBitmap 属性时不能实现此技术。)

 

4) 尽可能避免使用 alpha 属性。

 

5) 应用程序帧速率

a) 通常,使用尽可能低的帧速率可以提高性能。

b) 如果视频是应用程序中唯一的动态内容,请使用低帧速率。

c) 动态更改应用程序的帧速率。

   可以通过设置 Stage.frameRate 属性(或Flex 中的 WindowedApplication.frameRate 属性)来更改帧速率。

d) 在编译 SWF 文件时,应为影片设置特定的帧速率。

 

    用于开始确定适用于不同类型活动的合适帧速率的常规指导:

  • 如果使用的是 Flex 框架,将起始帧速率保持为默认值;(对于 Flex 中的内置应用程序, spark.components.WindowedApplication 类已经内置了用于动态更改应用程序的帧速率的支持功能。当应用程序处于非活动状态时, backgroundFrameRate 属性将定义应用程序的帧速率。默认值为 1,该值将使用Spark 框架构建的应用程序的帧速率更改为 1 帧/ 秒。您可以通过设置 backgroundFrameRate 属性来更改后台帧速率。您可以将此属性设置为其他值,或将其设置为 -1 以关闭自动帧速率限制。)
  •  如果应用程序包括动画,适当的帧速率至少是 20 帧/ 秒。通常不必超过 30 帧/ 秒。
  •  如果应用程序不包括动画, 12 帧/ 秒的帧速率可能就足够了。
  •  系统以本机帧速率播放加载的视频,而与应用程序帧速率无关。如果视频是应用程序中唯一的移动内容,12 帧/ 秒的帧速率可能就足够了。
  •  如果应用程序没有输入焦点, 5 帧/ 秒的帧速率可能就足够了。
  •  当 AIR 应用程序不可见时,2 帧/ 秒或更低的帧速率可能就足够了。

6) 位图缓存

a) 在适当的时候,对复杂的矢量内容使用位图缓存功能。

b) 对显示对象,仅当缓存的位图可以一次生成,且随后无需更新即可使用时,才适合使用位图缓存功能,否则会有反效果。使用位图缓存会占用大量内存,要节省内存,可使用 cacheAsBitmap 属性,并对每个显示对象而不是容器激活该属性。

注:AIR 和 Packager for iPhone 中提供的 DisplayObject.cacheAsBitmapMatrix 属性没有此限制。通过使用
cacheAsBitmapMatrix 属性,您可以旋转、缩放、倾斜显示对象以及更改其 Alpha 值,而不触发重新生成位图。

c) 如果不在各个帧上旋转、缩放或更改缓存的内容,则位图缓存可提高呈现效果。但是,对于 X 和 Y 轴上的平移之外的任何转换,则不会提高呈现性能。

注:AIR 和 Packager for iPhone 中提供的 DisplayObject.cacheAsBitmapMatrix 属性没有此限制。

d) 滤镜依赖每次缓存的影片剪辑的播放头移动时更新的位图。因此,使用滤镜会自动将 cacheAsBitmap 属性设置为 true。应避免在动画内容中使用滤镜,因为这可能导致性能问题。

e) 当在移动 AIR 应用程序中使用缓存位图时,设置 cacheAsBitmapMatrix 属性。

    设置此属性后,可以在不重新生成缓存位图的情况下对对象应用任何二维转换(缩放、倾斜、旋转和平移对象),还可以在不重新生成缓存位图的情况下更改 alpha 属性。(cacheAsBitmap 属性必须设置为 true,对象不得设置任何 3D 属性。)

注:如果使用颜色转换,通过 transform.colorTransform 属性更改 alpha 值,转换对象中使用的 alpha 必须位于 0 和 255 之间。以任何其他方式更改颜色转换都会重新生成缓存位图。

f) 使用 BitmapData 类创建自定义位图缓存行为。

g) 使用位图缓存功能和 opaqueBackground 属性可提高文本呈现性能。此技术适用于不随时间更改的内容。

 

7) GPU

a) Flash Player 10.1 一项重要的新功能是它可以使用 GPU 在移动设备上呈现图形内容。

    使用GPU 可以优化滤镜、位图、视频和文本的呈现。

    Flash Player 10.1 还有一个限制,即阻止在屏幕上呈现 Pixel Bender 效果。在使用硬件加速时,这些效果可能呈现为黑色的正方形。

    在 Flash Player 10.1中, GPU 用于计算图形,从而大大加快了呈现速度。

b) 通过在应用程序描述符中加入 <renderMode>gpu</renderMode>,在 AIR 应用程序中启用硬件图形加速。

          

    GPU 呈现模式最佳实践:

  • 限制舞台上可见项目的数量。当不再需要显示显示对象时,可将其 visible 属性设置为 false。(不要简单地将其移出舞台、将其隐藏在另一个对象后面或将其 alpha 属性设置为0。)如果彻底不再需要显示对象,使用 removeChild() 将其从舞台删除。
  • 重复使用对象,而不是创建和销毁它们。
  • 使位图的大小接近但小于 2n 乘 2m 位。尺寸不必正好为 2 的整数次幂,但是应该接近 2 的整数次幂,而不需要更大。(31 乘 15 像素的图像比 33 乘 17 像素的图像的呈现速度更快。)
  • 如果可能,在调用 Graphic.beginBitmapFill() 方法时将 repeat 参数设置为 false。
  • 不要过分夸张。将背景色作为背景。不要将较大形状进行叠放。每个必须绘制的像素都需要成本。
  • 避免使用带有狭长突起、自相交的边缘或边缘周围存在许多细节的形状。呈现这些形状需要的时间比边缘平滑的显示对象
    长。
  • 限制显示对象的大小。
  • 针对不经常更新图形的线索对象启用 cacheAsBitMap 和 cacheAsBitmapMatrix。
  • 避免使用 ActionScript 绘图 API (Graphics 类)创建图形。而是尽可能在创作时以静态方式创建这些对象。
  • 先将位图资产缩放到最终大小,然后再将其导入。

8) 推荐使用操作的异步版本,而不是同步版本(如果适用)。

 

9) AIR 应用程序中,考虑使用不透明的矩形应用程序窗口而不是透明窗口。

要为应用程序的初始窗口使用不透明窗口,请在应用程序描述符 XML 文件中设置以下值:
<initialWindow>
<transparent>false</transparent>

</initialWindow>

对于 Flex Window 组件,确保在调用 Window 对象的 open() 方法前,该组件的透明属性已设置为 false (默认值)。

 

10) 对形状进行平滑处理以改进呈现性能。

 

4. 优化网络交互

1) Flash Player 10.1 针对所有平台上的网络优化引入了一组新功能,包括循环缓冲和智能搜索(智能搜索功能要求使用 Adobe® Flash® Media Server 3.5.3。)。

 

2) 只能在缓存流的边界内进行搜索。如果偏移量超出范围, NetStream.seek() 有时会失败,此时将调度
NetStream.Seek.InvalidTime 事件。

 

3) 将应用程序分为多个 SWF 文件。

 

4) 针对 IO 错误提供事件处理函数和错误消息。

    最佳做法是谨记为用户提供一种再次加载内容的方式。

 

5) 使用 Flash Remoting 和 AMF 实现优化的客户端- 服务器数据通信。

 

6) 加载资源后将本地缓存,而不是在每次需要时从网络进行加载。

 

    可以根据资源的类型和性质通过多种方式缓存资源:

  • 媒体资源(例如图像和视频):使用 File 和 FileStream 类将文件保存到文件系统;
  • 单个数据值或小型数据集:使用 SharedObject 类将值另存为本地共享对象;
  • 较大数据集:将数据保存到本地数据库或对数据序列化并将其保存到文件中。

提示:对于缓存数据值, open-source AS3CoreLib project 包含一个 ResourceCache 类,可为您执行加载和缓存操作。

 

 

5. 处理媒体

1) 有关优化移动设备上的视频性能的信息,详见:优化用于移动传送的 Web 内容的工具

 

2) 在 Flash Player 9.0.115.0 及更高版本中,Flash Player 可播放 AAC 文件(AAC Main、AAC LC 和 SBR)。

    使用 AAC 文件代替 MP3 文件可实现简单优化。

    在比特率相同的情况下, AAC 格式的文件比 MP3 格式的文件品质更好、文件大小更小。

 

3) 与视频解码类似,音频解码要求高 CPU 周期,并可通过利用设备上提供的硬件来进行优化。

    Flash Player 10.1 在解码 AAC文件(LC、HE/SBR 配置文件)或 MP3 文件(不支持 PCM)时,可以检测和使用硬件音频驱动程序来提高性能。

 

6. SQL数据库性能

1) 针对数据库性能的应用程序设计

     a) 不要在执行 SQLStatement 对象后更改其 text 属性。

         针对每个 SQL 语句使用一个 SQLStatement 实例并使用语句参数提供不同值。

     b) 使用数据库索引可以提高执行数据比较和排序的速度。

 

         使用下列准则可以计划索引策略:

  • 对连接表、WHERE 子句或 ORDER BY 子句中使用的列编制索引;
  • 如果这些列经常一起使用,请在单个索引中对其编制索引;
  • 对于包含您检索的、按字母顺序排序的文本数据的列,请为索引指定 COLLATE NOCASE 排序规则。

     c) 考虑在应用程序空闲时间期间预编译 SQL 语句。

     d) 在一个事务中组合多个 SQL 数据更改操作。

     e) 使用 SQLStatement 类的 execute() 方法(带有 prefetch 参数)和 next() 方法处理各部分中的大量 SELECT 查询结果。

     f) 考虑使用共用一个数据库的多个异步 SQLConnection 对象来同时执行多个语句。(不建议对移动设备使用此方法。)

 

提示:Paul Robertson 创建了一个开放源代码库 ,可以帮助您结合使用多个 SQLConnection 对象的优点并在最大程度上减少潜在缺点 此库使用 SQLConnection 对象池并管理相关联的 SQLStatement 对象。

 

2) 数据库文件优化

     a) 避免数据库架构更改。

     b) 在架构更改后,使用 SQLConnection.compact() 方法优化数据库。

         但是, compact() 操作可能需要大量的时间,尤其是数据库文件日益增长时。

 

3) 不是非常必要但推荐的数据库运行时处理

     a) 在 SQL 语句中使用完全限定的表名称(包括数据库名称)。

     b) 在 SQL INSERT 和 SELECT 语句中使用显式列名称。

     c) 除非将该表与其本身进行比较,否则避免在一个语句中多次连接同一个表。

 

 

4) 有效的 SQL 语法

     a) 使用 JOIN (位于 FROM 子句中)可以在查询中包含表,而不是在 WHERE 子句中包含子查询。

         即使您只需要使用表数据进行过滤而不是生成结果集,该技巧也同样适用。

         在 FROM 子句中连接多个表执行操作的效果比在 WHERE 子句中使用子查询的效果要好。

     b) 避免使用无法利用索引的 SQL 语句。

         这些语句包括使用子查询中的聚合函数、子查询中的 UNION 语句或包含 UNION 语句的 ORDER BY 子句。

     c) 考虑避免使用 LIKE 运算符,特别是带有前导通配符的运算符。

     d) 考虑避免使用 IN 运算符。

         如果预先知道可能的值,可使用 AND 或 OR 写入 IN 操作以加快执行速度。

     e) 考虑使用 SQL 语句的替代形式以提高性能。

 

5) SQL 语句性能:直接比较替代 SQL 语句以确定哪个速度更快。

    比较多个版本的 SQL 语句的性能的最佳方法是直接使用您的数据库和数据对它们进行测试。

 

 

   下列开发工具提供了运行 SQL 语句时的执行次数:

  • Run! (Paul Robertson 提供的 AIR SQL 查询创作工具和测试工具)
  • Lita (David Deraedt 提供的 SQLite 管理工具)

 

7. 基准测试和部署

1) 基准测试工具

     a) Stats 类:在运行时使用 Flash Player 的发行版(而不是外部工具)设置代码。

     b) PerformanceTest 类:一种可集成到单元测试工作流程中的工具。

     c) Flash Builder 探查器。

     d) FlexPMD:通过审核 ActionScript 3.0 或 Flex 源目录来提高代码品质。

 

2) 部署:在 Flash Builder 中导出应用程序的最终版本时,确保导出该应用程序的发行版非常重要。

    导出发行版将删除 SWF 文件中包含的调试信息。

    删除调试信息将减小 SWF 文件的大小并有助于加快应用程序的运行速度。

 

 

 

分享到:
评论

相关推荐

    Flex第一步——基于ActionScript 3

    本篇内容将深入探讨“Flex第一步——基于ActionScript 3”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...

    Flex&Bison学习——1.1

    Flex&Bison学习——1.1 /* 一个字数统计(word_counter)程序,程序读入一个文件然后报告这个文件的行数、单词树和字符数。 */ %{ // %{ 和 %}之间的代码会被原样照抄到生成的C文件的开头部分。 int chars = 0; // ...

    FLEX技术之四——界面布局和导航

    flex界面布局和导航,flex各个控件的使用,布局的容器和布局的空间,详细的代码演示

    至理.精通Flex网络开发技术——源代码

    学习Flex开发,首先需要理解MXML和ActionScript这两种核心语言。MXML是一种声明式语言,用于构建UI布局和组件,而ActionScript则是一种面向对象的脚本语言,负责处理程序逻辑和交互。 在书中,作者张亚飞可能详细...

    细细品味Flex——新Flex学习手册.pdf

    细细品味Flex——新Flex学习手册 技术齐全

    Flex从入门到实践——源代码(9章)

    "Flex从入门到实践——源代码(9章)"这个压缩包文件提供了学习Flex开发的实用资源,包含了9个章节的源代码示例,这些章节可能覆盖了Flex的基础到进阶内容。 1. **Flex基础**:Flex的基础知识通常包括Flex SDK的安装...

    flex学习笔记 flex学习总结 flex学习教程

    9. **Flex性能优化**:学习如何通过优化组件使用、减少网络请求、缓存策略等方式提升Flex应用的性能。 10. **实践项目**:理论学习后,通过实际项目练习,将所学知识应用于实践中,是巩固和提高技能的最佳方式。 ...

    Flex3学习指南-是初学者学习Flex必备资料1

    13. **Flex的最佳实践**:包括代码组织、性能优化、错误处理和调试技巧,这些都是开发者在学习Flex过程中需要掌握的重要知识。 综上所述,"Flex3学习指南1-8"这个压缩包文件包含了Flex 3从基础到深入的多个章节,...

    FLEX入门篇——日期的格式化

    本文将围绕“FLEX入门篇——日期的格式化”这一主题,深入探讨如何在Flex中处理和格式化日期。日期格式化在任何应用程序中都是常见的需求,尤其是在展示或存储用户友好的时间信息时。 首先,我们要了解Flex中处理...

    flex4 学习资料

    本学习资料集全面覆盖了Flex4的基础与进阶知识,是学习Flex4开发的理想资源。 1. **基础概念** - **ActionScript 3.0**:Flex4的核心编程语言,具有面向对象的特性,性能比Flex3中的ActionScript 2.0显著提升。 -...

    Flex中文帮助 学习Flex的好资料

    9. **调试和测试**:Flex SDK包含了Flex Builder,这是一个强大的IDE,内置了调试工具和性能分析器,有助于开发者定位问题和优化性能。 10. **最佳实践和设计模式**:学习Flex的过程中,了解和应用设计模式,如MVC...

    创建第一个Flex应用——设计模式

    创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式创建第一个Flex应用——设计模式

    创建第一个Flex应用——编码模式

    创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式创建第一个Flex应用——编码模式

    flex4 学习全部资料

    在本资源包中,你将找到关于Flex4学习的所有必要资料,包括安装指南、API文档、学习文档以及示例代码,这将对你的Flex4学习之路提供极大的帮助。 一、Flex的安装 Flex的开发环境主要依赖Adobe Flash Builder,这是...

    Flex 学习资料flex学习资料

    flex学习资料flex学习资料flex学习资料

    FLEX——blazeDS原理.pdf

    FLEX——blazeDS原理.pdfFLEX——blazeDS原理.pdf

    ArcGIS Flex 例子——源码(强烈推荐)

    **ArcGIS Flex 示例详解——源码深度解析** ArcGIS Flex 是 Esri 公司提供的一款基于 Adobe Flex 技术的 GIS 开发框架,它允许开发者创建丰富的、交互式的地图应用程序,用于网页上展示地理信息。这个压缩包包含的...

    FLEX ——完美的 TREE

    这个标题“FLEX ——完美的 TREE”提到了FLEX在实现一个特定功能——TREE组件方面的卓越表现。TREE组件是FLEX中用于展示层次结构数据的关键元素,它允许用户以树形结构查看和操作数据,这在许多场景下都非常有用,...

    Flex 开发者学习和进阶过程探讨

    Flex 开发者学习和进阶过程探讨,在RIAMeeting找到这份PDF文档,觉得挺不错的,至少让我了解了自己目前所处的阶段

    Flex 性能优化全集

    学习了Flex,主要是被它的炫丽的外表所吸引,但用起来,性能却是很大问题,这里有教你性能上的调优

Global site tag (gtag.js) - Google Analytics