自己翻译的,原文见此:
http://insideria.com/2009/04/51-actionscript-30-and-flex-op.html
1.在创建新的Array的时候尽量不要使用new
使用
var a = [];
而不是
var a = new Array();
2.创建Array非常消耗资源,建议保守使用
3.复制Array最快的方法是:
var copy : Array = sourceArray.concat();
4.对Array中元素赋值是很慢的
employees.push( employee );
employees[2] = employee;
5.取得Array中元素的值比赋值快一倍
var employee : Employee = employees[2];
6.将不需要对象实例的方法设置为静态(static)
StringUtils.trim( "text with space at end " );
Class definition:
package
{
public final class StringUtils
{
public static function trim( s : String ) : String
{
var trimmed : String;
// implementation...
return trimmed;
}
}
}
7.将整个应用生命周期内都不会改变的属性设置为常量(const)
public const APPLICATION_PUBLISHER : String = "Company, Inc.";
8.当一个类不会再有子类时,使用final关键字
public final class StringUtils
9.方法/变量/常量的名字长度不会影响性能(在其它语言中往往并非如此)
someCrazyLongMethodNameDoesntReallyImpactPerformanceTooMuch();
10.将一些元素在同一行中赋值不会提升性能(在其它语言中往往并非如此)
var i=0; j=10; k=200;
11.在内存占用上,if和switch几乎没有区别
if ( condition )
{
// handle condition
}
同下边的代码占用相近的内存
switch ( condition )
{
case "A":
// logic to handle case A
break;
case "B":
// logic to handle case B
break;
}
12.对if的条件进行排序,最经常遇到的情况放在前面
if ( conditionThatHappensAlot )
{
// logic to handle frequently met condition
}
else if ( conditionThatHappensSomtimes )
{
// handle the case that happens occaisonally
}
else
{
// handle the case that doesn’t happen that often
}
13. AVM在循环中会将int转换为Number,不过AVM也在变化,现在int/uint向Number的转换没有之前那么慢了
14.正确处理未知、不正确的Object类型极其转换
15.保守使用uint,因为它非常慢,不过VM也在改进,对uint的处理速度也在不断提升
var footerHex : uint = 0x00ccff;
16. 在循环条件中使用int
使用
(var i: int = 0; i < n; i++)
而不是
for (var i: Number = 0; i < n; i++)
17.不要把浮点数赋给int变量
var decimal : Number = 14.654;
而不是
var decimal : int = 14.654;
18.尽量使用乘法运算代替除法运算
如:使用5000*0.001来代替5000/1000
19.循环体中经常用到的函数或计算可放在循环体外
使用
for (..){ a * 180 / Math.PI; }
不如在外边声明
toRadians = a*180/Math.PI;
20.在循环中避免计算或者调用函数
最典型的应用莫过于使用:
var len : int = myArray.lengh;
for (var i=0;i<len;i++){}
而不是:
for (var i=0;i< myArray.lengh;i++){ }
21.使用RegEx来进行验证,使用string的方法进行查找
// postal code validation example using regular expressions
private var regEx:RegExp = /^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$/i;
private function validatePostal( event : Event ) : void
{
if( regEx.test( zipTextInput.text ) )
{
// handle invalid input case
}
}
// search a string using String methods
var string : String = "Search me";
var searchIndex : int = string.indexOf( "me" );
var search : String = string.substring( searchIndex, searchIndex + 2 );
22. 重用诸如 DisplayObjects, URLLoader 一类的对象来维持“内存平稳”
23. 遵循Flex组件模型:
createChildren();
commitProperties();
updateDisplayList();
24. 在没有其它办法的情况下再使用DataGrid。你确信它不能用List实现吗?
25. 避免对可串行查看的数据使用Repeater
26. 避免使用setStyle()函数,它是Flex框架中最消耗资源的函数之一
27. 使用过多的容器将会极大影响程序的性能
<mx:Panel>
<mx:VBox>
<mx:HBox>
<mx:Label text="Label 1" />
<mx:VBox>
<mx:Label text="Label 2" />
</mx:VBox>
<mx:HBox>
<mx:Label text="Label 3" />
<mx:VBox>
<mx:Label text="Label 4" />
</mx:VBox>
</mx:HBox>
</mx:HBox>
</mx:VBox>
</mx:Panel>
28. 没必要一直保有一个最顶层容器,直接使用标签也是完全可以的,如
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml"
source="avatar.jpg" width="200" height="200" />
29. 去掉不需要的容器以减少容器嵌套
30. 去掉容器中VBox(减少冗余)
<mx:Panel>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:Panel>
<mx:Panel>
<mx:VBox>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:VBox>
</mx:Panel>
31.避免在mx:Application标签中使用VBox(减少冗余)
使用:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:Application>
而不是:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml>
<mx:VBox>
<mx:Label text="Label 1" />
<mx:Label text="Label 2" />
</mx:VBox>
</mx:Application>
32. 设置Repeater的recycleChildren属性为true以提升性能
<mx:Script>
<![CDATA[
[Bindable]
public var repeaterData : Array = ["data 1", "data 2"];
]]>
</mx:Script>
<mx:Repeater id="repeater" dataProvider="{repeaterData}">
<mx:Label text="data item: {repeater.currentItem}"/>
</mx:Repeater>
33. 帧频设置为60fps以下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml
frameRate="45">
</mx:Application>
34. 避免每帧同时改变多个显示对象
35. 尽量使用ENTER_FRAME事件而不是Timer事件
public function onEnterFrame( event : Event ) : void
{
}
private function init() : void
{
addEventListener( Event.ENTER_FRAME, onEnterFrame );
}
而不是:
public function onTimerTick( event : Event ) : void
{
}
private function init() : void
{
var timer : Timer = new Timer();
timer.start();
timer.addEventListener( TimerEvent.TIMER, onTimerTick );
}
36. 推迟具有多个帧时对象的建立
<mx:Container creationPolicy="queued"/>
37. Alpha = 0 不等同于 visible = false
visible置false的对象被从显示列表中移除了
使用
loginButton.visible = false;
而不是
loginButton.alpha = 0;
分享到:
相关推荐
在本文中,我们将深入探讨如何在Flex应用中加载由ActionScript 2(AS2)编写的SWF文件,以及这背后的原理和技术细节。Flex是一种基于Adobe Flash Platform的开放源码框架,主要用于构建富互联网应用程序(RIA)。而...
根据提供的标题、描述、标签及部分内容,我们可以总结出与Flex优化相关的多个知识点。这些知识点主要集中在提高Flex应用程序的性能上,涉及代码优化、资源管理、数据处理等方面。 ### Flex优化全集 #### 1. 数组...
在描述中提到的链接(http://www.rubenswieringa.com/code/as3/flex/Book/)提供了一个具体的示例,演示了如何在Flex中实现书籍翻页效果。这个例子可能包括以下关键组成部分: 1. **组件设计**:为了实现翻页效果,...
### Flex AS3 元数据标签综合解析 #### 一、元数据标签概述 在Flex与AS3(ActionScript 3)开发中,元数据标签(Metadata Tags)是一种重要的语法结构,用于向编译器提供有关类或成员的额外信息。这些标签能够帮助...
通过本指南的学习,您将能够熟练掌握Flex和ActionScript 3.0的核心概念和技术细节,从而有效地开发出高质量的应用程序。无论是初学者还是经验丰富的开发者,都可以从中受益匪浅。随着技术的不断进步和发展,Adobe ...
以上是Flex和Hibernate整合的主要方面,实际开发中还需要结合具体项目需求进行调整和优化。通过深入理解和熟练掌握这些技术,开发者可以构建出高效、健壮的Flex-Hibernate应用程序。在提供的链接中,博主 ...
8. **最佳实践**:可能会分享一些Flex和AS3开发的最佳实践,如模块化设计、性能优化、错误处理和资源管理。 尽管原始描述没有提供具体信息,但通过对压缩包文件的分析,我们可以推测博主可能详细介绍了这些工具和...
日志记录是跟踪应用程序运行时状态的有效手段,它可以帮助开发者了解程序执行的细节,找出潜在的错误和性能瓶颈。在Flex Builder中,输出日志到不同的位置可以帮助我们更好地组织和分析日志信息。 首先,我们可以将...
### Flex与Servlet结合实现文件上传及下载功能 在Flex与Servlet技术结合的背景下,本文将详细介绍如何通过这两种技术实现文件的上传与下载功能。...此外,还可以进一步优化用户体验,例如增加错误处理机制、美化UI等。
为了优化用户体验,这些组件不一次性加载所有数据,而是分批加载,每次只显示一部分,这就是分页的作用。用户可以通过点击“上一页”、“下一页”等按钮来切换页面。 在提供的文件列表中,我们看到一些可能与分页...
在Flex开发中,创建用户界面时,我们常常会遇到需要展示多行Tab导航的情况。默认情况下,Flex的TabNavigator组件的TabBar控件只会在一行内显示Tab项,但通过...记住,良好的用户体验往往来源于对细节的关注和优化。
解压此文件后,你可以看到源代码文件(可能包括.as或.mxml),这些文件展示了流程图组件的实现细节,包括图形绘制、事件处理、数据绑定等方面。通过阅读和学习这些源代码,开发者可以学习如何在Flex环境中创建动态、...
3D功能在Flash中主要通过AS3(ActionScript 3)实现,而日本人在这个领域表现出色,他们以细腻的工艺和对细节的关注著称,所以这个Demo的精良程度不言而喻。 “zhenhan”可能是指这个Demo的开发者或者是一个特定的...
同时,避免在客户端暴露过多数据库操作细节,以提高应用的安全性。 通过以上步骤,你可以在Flex应用中利用Java对象有效地连接到SQL Server数据库,实现数据的动态交互。在实际开发中,还需要根据具体业务需求调整和...
- 性能优化:针对Flex应用进行了性能优化,提升运行效率。 #### 七、Open Source Flex Component: TreeMap - **网址**:http://www.zeuslabs.us/2007/11/14/open-source-flex-component-treemap/ - **简介**:一...
这个基本的实现只是一个起点,实际应用中可能需要考虑更多的细节,例如处理空输入、优化过滤性能、添加延迟过滤以减少不必要的计算等。此外,你还可以根据需求调整过滤函数,比如根据多个字段进行过滤,或者使用正则...
通过他的工作和博客,Satish 分享了许多关于 Flex 和 Java 集成开发的经验和技术细节。 --- 通过以上对《Flex 3 with Java》这本书的介绍和分析,我们可以看出本书旨在帮助开发者全面了解如何使用 Flex 3 和 Java ...
综上所述,这个源码包提供了一个基于Flex技术的个人网站管理系统,通过MXML和AS3实现了富交互的前端,结合Cairngorm MVC框架优化了代码结构,利用AMFPHP实现了高效的数据通信,是学习和研究FLEX应用开发的好素材。
4. 使用组件:在Flex界面布局中,通过MXML或AS3代码实例化并添加这个Gif播放器组件。 接下来,`md.gif`文件很可能是用来测试`gifplayer.swf`组件的一个Gif示例。在实际应用中,开发者会将这个组件与自己的Gif文件...