ActionScipt技巧和开发中会遇到的问题

2019-10-08 18:56:18刘景俊

import MyPackage.MyClass;
你必须这样做既是所有的引用都是完全合法的,并且要使用完整的名字MyPackage.MyClass。在ActionScript 3.0中,import语句表明你想要使用一个来自另外一个包中的类,而在ActionScript 2.0中,它只是用来帮助记忆类名。在ActionScript 3.0中,完整的类名只是用来消除歧义,而不再是import语句的替代品。
也可以使用 * 通配符来导入一个包中的所有类。

import MyPackage.*;
单个地导入类被认为是一个好习惯,因为这样更明确地表明了你的代码使用了哪一个类。
•始终标记方法的覆写。Override关键字可以帮助避免覆写方法时常见的错误,比如对一个被覆写得方法定义了错误的名字或者被覆写的方法的名字改变导致的错误。这样做会使包含有覆写方法的代码看起来更清晰。因为编译器能够知道一个方法是否试图覆写另外一个,它就能执行更好的检查。ActionScript 3.0中的override关键字是从C#的override关键字中获得的灵感。
•在函数中定义返回类型。为一个函数定义返回类型是一个好习惯。如果你忽略了返回类型,会出现一个警告。这是为了类型的安全性,这样一来你就不会无意中没有写返回类型而得到默认的Object返回类型。如果一个函数没有返回任何值,将它的返回类型声明为void。
•注意,delegate现在被定义到了语言里,使得事件分派更简单。在ActionScript 2.0中,把事件指向到一个方法需要使用mx.utils.Delegate 类或者其他的工作:
import mx.utils.Delegate;
myButton.addEventListener(”click”, Delegate.create(this, onClick));
在ActionScript 3.0中,方法的一个引用会自动记住它引用的对象实例。这被称为method closure。本质上来说,这就是一个自动的delegate。所以,代码可以简单地写成:
myButton.addEventListener(”click”, onClick);
•现在解除一个null或者undefined的引用将会抛出一个异常。解除一个null或者undefine的引用在以前的ActionScript中会被忽略并且定义引用为undefined。现在,一个TypeError异常会抛出。提防无意中解除的null或undefined引用,并且依靠这个报告错误的特性。这种新的抛出异常的特性与ECMAScript定义相符合。
•使用-verbose-stacktraces和 -debug选项。使用命令行选项-verbose-stacktraces和-debug编译可以使文件名和行号出现在Flash Player的警告框中。当一个运行时错误发生时,一个对话框会描述这个错误并且列出它发生错误的地方的调用堆栈。使用-verbose-stacktraces和-debug选项可以让在源代码中定位错误变得简单。
•显式声明bindable属性。属性不再默认为bindable。你必须使用[Bindable]元数据标签来声明它们为bindable。
•注意Flash Player API被重新组织到了包里。以前Flash Player API中所有的类和函数都是全局的。现在有了许多包,象flash.display, flash.events, flash.ui以及其它。举个例子,MovieClip现在是flash.display.MovieClip并且getTimer 和 setInterval都被放进了flash.utils 包中。