ActionScript 3.0 类编写为文本文档, 独立于使用它的 Flash FLA 或 Flex MXML 文件。类文件需要与类同名, 扩展名为 .as。类文件应包含在与类的包结构匹配的文件夹层级中。在此例中, 我们要创建 Greeter 类, 使其保存在名为 Greeter.as 的文件中。包含包的完整类名称为“com.example.quickstart.Greeter” (Greeter 类包含在“com.example.quickstart”包中), 因此, Greeter.as 文件必须保存在类似于“/com/example/quickstart/”的文件夹结构中。“com”文件夹可以包含在应用程序的根文件夹中, 也可以包含在作为应用程序的 ActionScript 类路径一部分的文件夹中。
为 Greeter 类创建类文件:
使用 class
声明定义类的名称。一个类必须指定为“公用”, 其他代码才能创建该类的实例 (基本上, 除几种特别情况外, 所有 ActionScript 3.0 类都必须为公用类)。完整的声明为 public class ClassName
。该声明后接一对花括号, 其中包含类的内容。
反过来, class
声明必须包含在 package
声明中, 指示从中找到类的包的名称。语法与 class
声明语法相似: 文字 package
后接包名称, 然后是一对花括号, 其中包含包的内容 (一个 class
声明加上需要的任何 import
声明)。
将 class
和 package
声明添加到 Greeter 类中:
在您的 ActionScript 文件中, 输入以下代码:
package com.example.quickstart
{
public class Greeter
{
//
类内容 (方法和属性) 将显示在此处
}
}
此代码包含package
声明 (package com.example.quickstart
) 及其花括号组, 其中包含 class
声明 (public class Greeter
) 及其花括号组。
可以使用 var
声明在类正文中定义类的属性。语法类似于用于声明任何变量的语法, 不同之处在于您添加 public
修饰语 (与其在 class
声明中的使用方法一样)。
在 Greeter 类中定义 name
属性:
在 class
声明的左右花括号之间添加一个空白行, 然后输入以下代码:
public var name:String;
此行代码定义 name
属性, 其中包含 String 值。您可以选择以指定变量初始值相同的方法指定属性的默认值 (例如 public var name:String = "Fred";
)。但是, 在本“快速入门”中, 您将在构造函数方法中设置初始值。
请注意, 您还可以使用修饰语 private
而不是 public
定义专用属性, 类似于:
private var secretValue:Number;
专用属性基本上可由类定义中任何代码访问的变量; 但不可用于类定义之外。
您使用与定义函数相同的语法在类中定义方法, 只是增加了访问修饰语 (例如 public
或 private
)。方法定义由以下元素构成:
public
或 private
) function
void
) 创建不接受任何参数并返回字符串值的 sayHello()
方法:
在 class
声明的左右花括号之间输入以下代码行:
public function sayHello():String
{
var result:String; if (name != null && name.length > 0)
{
result = "Hello there, " + name + ".";
}
else
{
result = "Hello there, anonymous.";
}
return result;
}
构造函数方法是一种特别的方法, 作为创建类实例过程的一部分被调用。可以使用构造函数指定属性的初始值或执行其他设置明细步骤。作为构造函数特别性质的一部分, 当您定义构造函数时, 方法的名称必须与类名称精确匹配, 方法必须定义为 public
, 而且不能指定返回值的数据类型 (或 void
)。
为 Greeter 类创建构造函数方法:
在类声明的左右花括号之间输入以下代码行:
public function Greeter(initialName:String = "")
{
name = initialName;
}
此代码定义可选择接受单个 String 参数的构造函数。如果值通过该参数, 则值指派给名称属性。否则, 名称属性设置为 ""
(空字符串), 因为这是该方法参数的默认值。
如果在类中不定义构造函数方法 (例如, 如果无需执行任何设置操作), 则编译器将自动为您的类创建空构造函数 (无参数、无声明)。
您可以定义其他几个类元素。创建这些元素的过程比创建方法和属性涉及更多内容, 因而在本“快速入门”中详细介绍:
您可以像任何其他 ActionScript 类中一样在您自己的类中创建和使用实例。首先, 您必须使用 import
声明以及类的包和名称, 以告诉编译器在何处查找类。对于 Greeter 类, import
声明类似于:
import com.example.quickstart.Greeter;
当您添加 import
声明后, 可以像任何其他类一样使用您的类。例如, 可以声明数据类型就是您的类的变量, 以及创建用于存储变量的类的实例:
var michaelGreeter:Greeter = new Greeter("Michael");
您还可以将值指派给实例的属性并调用其方法:
michaelGreeter.name = "Mike"
trace(michaelGreeter.sayHello());
以下示例创建 Greater 类的一个实例, 将 name
属性设置为“Steve”, 然后调用 sayHello()
方法并将产生的问候语写入屏幕上的文本字段 (Flash) 或文本组件 (Flex)。
此示例由两部分构成: Greeter.as 文件中的 Greeter 类 (在本“快速入门”中已构建的文件) 和创建和使用 Greeter 类的实例的应用程序文件 (Flash FLA 或 Flex MXML 文件)。以下代码片断显示 Greeter 类的完整版本。关于创建示例应用程序文件的 Flash 和 Flex 版本的说明如下:
package com.example.quickstart
{
public class Greeter
{
public function Greeter(initialName:String = "")
{
name = initialName;
}
public var name:String;
public function sayHello():String
{
var result:String;
if (name != null && name.length > 0)
{
result = "Hello there, " + name + ".";
}
else
{
result = "Hello there, anonymous.";
}
return result;
}
}
}
在 Flash CS3 Professional 中创建此示例:
在选定帧 1 上的关键帧后, 打开“动作面板”并输入以下代码。
import com.example.quickstart.Greeter; // 创建初始名称为“Steve”的 Greeter 实例 var myGreeter:Greeter = new Greeter("Steve"); // Steve, 您好 output.text = myGreeter.sayHello(); // 将光标移动到下一行 output.text += "\n"; // 将 Greeter 实例名称设置为“Harold” myGreeter.name = "Harold"; // Harold, 您好 output.text += myGreeter.sayHello();
文章来自:http://www.adobe.com/cn/devnet/flash/quickstart/creating_class_as3/#properties