2005/03/01 | 创建自定义类
类别(失落的学习) | 评论(2) | 阅读(92) | 发表于 10:34

尽管动作脚本包含对象的许多类(如 MovieClip 类和 Color 类),但是您在许多时候仍需要构造自己的类,以便可以基于特定的属性集或方法集创建对象。

要创建一个定义每个新对象的类,请为自定义对象类创建一个构造器,然后基于这个新类创建新的对象实例,如以下范例所示:

注意:下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

function Product (id:Number, prodName:Name, price:Number)
{
this.id:Number = id;
this.prodName:String = prodName;
this.price:Number = price;
}

为了在动作脚本 2.0 中正确地定义类,所有类都必须带有 class 关键字,而且您必须在构造器的外部声明构造器中的所有变量。下面是一个范例:

注意:下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

class Product
{
//variable declaration
var id:Number
var productName:String
var price:Number
//constructor
function Product (id:Number, prodName:Name, price:Number)
{
this.id = id;
this.prodName = prodName;
this.price = price;
}
}

要从该类创建对象,现在可以使用以下代码:

注意:下面的动作脚本只是一个范例。您不应在课程 FLA 文件中输入该脚本。

var cliplessPedal:Product=new Product(1, "Clipless Pedal", 11);
var monkeyBar:Product=new Product(2, "Monkey Bar", 10);

但是,在动作脚本 2.0 中,不应当直接访问属于类结构的变量。您应当在将直接访问这些变量的类内部编写方法。获取和设置属性时应该会有不同的方法(大家都知道的“getter”和“setter”方法)。您必须为方法的返回值以及在调用方法时传递到该方法的所有参数指定数据类型。

构建自定义类
现在,将用 getter 和 setter 方法构建一个新的 Product 类,并从该 Product 类创建一个对象。

通过执行下列操作之一来创建动作脚本文件:
如果您使用的是 Flash MX 2004 Professional,请选择“文件”>“新建”>“动作脚本文件”(不是 Flash 文档)。使用名称“Product”保存该文档。
如果您使用的是 Flash MX 2004,请打开文本编辑器(如“记事本”)。使用名称“Product.as”保存该文件(请记住让文件使用 AS 作为扩展名,以创建动作脚本文件。)
通过创建一个名为“Product”的且具有 id、prodName 和 description 参数的函数来为 Product 类创建一个构造器:
function Product (id:Number, prodName:String, description:String)
{}

在构造器函数中,将 Product 类的属性设置为与要创建的 setter 方法相等:
setID(id);
setProdName(prodName);
setDescription(description);

在 class 关键字周围放置该构造器函数。一定要声明该类中使用的每个变量:
class Product
{
var id:Number;
var prodName:String;
var description:String

function Product (id:Number. prodName:String, description:String)
{
setID(id);
setProdName(prodName);
setDescription(description);
}
}

为该类的每个属性定义 getter 和 setter 方法,如下例所示。一定要将 Void 指定为 setter 方法的返回类型,并为 getter 方法指出返回的数据类型。
class Product
{
var id:Number;
var prodName:String;
var description:String

function Product (id:Number, prodName:String, description:String) {
setID(id);
setProdName(prodName);
setDescription(description);
}
public function setID (id:Number) :Void
{
this.id = id;
}
public function setProdName (prodName:String) :Void
{
this.prodName = prodName;
}
public function setDescription (description:String) :Void
{
this.description = description;
}
public function getID () :Number {
return id;
}
public function getProdName () :String {
return prodName
}
public function getDescription () :String {
return description;
}
}

保存文件。
注意:刚创建的示例完成文件(名为 Product.as)位于 finished files 文件夹中。
0

评论Comments