高效AS3编码的技巧

3

AS3和许多面向对象编程语言一样,包含许多优化技术,这些技术可能对经验不足的用户来说是未知的。这些技术可以涵盖微观-宏观编码差异和文件结构。以下是值得了解的提示,将丰富AS3程序员的知识。

核心思想:介绍优化方法给新手程序员,他们可能只知道基础知识,但不了解“老练”程序员的各种技巧(尤其是循环中的技巧)。

由于大多数AS3程序员都会使用Flash或Flex,因此与它们有关的编程技巧也自然受到欢迎。

请每个答案限制一个提示,这样最好的提示就会自然浮现到顶部=)

然而:AS3是一种“编译语言”,它本身会进行很多优化,所以对于新手来说,过度遵循这些提示并不是必要的。从中学习,而不是成为其奴隶。第一步始终是“完成应用程序”。


1
听起来像是:“让我们在一页上汇集Flash平台工艺的所有智慧和传统!” - Michael Antipin
14个回答

1

在优化移动设备的 Flex 项目时,请确保使用 ActionScript 构建自定义皮肤,而不是 MXML。由于 MXML 由 Flex 编译器转换为 AS3,因此它并不总是最高效的。使用 ActionScript 可以避免这种情况。

最有可能您需要扩展 MobileSkin 类,该类包括额外的方法,这些方法是辅助方法或向标准 UIComponent 生命周期方法添加附加钩子的方法。

一些附加钩子方法:

  • layoutContents()
  • drawBackground()
  • commitCurrentState()

您可以扩展这些方法以执行自己的功能。layoutContents 和 drawBackground 是从 updateDisplayList 调用的。commitCurrentState 是从 set currentState 方法调用的。

一些辅助方法包括:

  • getElementPreferredHeight()
  • getElementPreferredWidth()
  • setElementSize()
  • setElementPosition()

您不需要扩展这些方法,只需根据需要调用它们即可。


1

在早期的Flex框架版本中,根据需要销毁和创建对象并不罕见。ComboBox的下拉菜单就是一个例子。我认为这样做是因为释放内存被认为比实例化的成本更重要。 - JeffryHouser

1

在 Flash 平台 API 中广泛使用的常规 EventDispatcher 有一个成本:实例化多个对象,通常继承 Event 类型。

信号和槽 模式是一个可靠的替代方案,众所周知(请参见 Boost::Signals、Qt),将导致巨大的性能提升,基准测试 在这里,尽情享受吧。

TurboSignalsas3-signal 是可靠的开箱即用实现。我认为 as3-signals 已经可以投入生产并在我的日常工作中使用。


1

尽可能将您的应用程序拆分!

将所有功能拆分为类、子类等。避免在 MXML 包含脚本/初始化脚本中添加代码,保持最小化。这将有助于在不太长的时间内,特别是在更大的 RIA 项目中,当您的应用程序计划可能会改变时。通过交换类并运行搜索替换,它还使更改更容易。

同时使您的代码更易于理解,无论是对未来的自己还是他人。


你在引用什么吗?如果是的话,能指定一下来源吗?我认为将代码拆分成模块是一个好的决策,有利于长期维护;然而,我并不认为这总是对于代码性能或“上市时间”问题来说最佳决策。 - JeffryHouser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接