注意:如果您从未使用动作脚本编写过面向对象的脚本,而且不需要以 Flash Player 5 作为目标播放器,则不应使用本节中的信息,因为我们不鼓励使用动作脚本 1 来编写脚本;而应参见使用动作脚本 2.0 创建类以获得有关使用动作脚本 2.0 的信息。
动作脚本是一种面向对象的编程语言。面向对象的编程使用对象(或称作数据结构)将控制对象行为和外观的属性和方法组合在一起。使用对象可以组织并重用代码。定义了一个对象后,可以通过名称引用该对象,而无需在每次使用它时重新进行定义。
类 是对象的通用类别。类定义一系列具有公共属性,并且能够以相同的方式进行控制的对象。属性是定义对象的特性,例如,其大小、位置、颜色、透明度,等等。属性针对某个类进行定义,而属性的值则针对该类中各个单独的对象设置。方法是可以设置或检索对象的属性的函数。例如,您可以定义一个方法来计算某个对象的大小。与属性类似,方法针对某个对象类进行定义,然后针对该类中各个单独的对象调用。
动作脚本提供了几个内置类,包括 MovieClip 类和其它一些类。您也可以创建类,为您的应用程序定义各种对象类别。
动作脚本中的对象可以是纯数据容器,或者可以在舞台上以图形化方式表示为影片剪辑、按钮或文本字段。所有影片剪辑都是内置类 MovieClip 的实例,所有按钮都是内置类 Button 的实例。每个影片剪辑实例都包含 MovieClip 类的所有属性(例如,_height
、_rotation
、_totalframes
)和所有方法(例如,gotoAndPlay()
、loadMovie()
、startDrag()
)。
若要定义类,您需要创建一个称作构造函数 的特殊函数。(内置类具有内置的构造函数。)例如,如果需要应用程序中某个自行车骑手的相关信息,您可以创建一个构造函数 Biker()
,它具有属性 time
和 distance
,以及能够告诉您自行车行进速度的方法 getSpeed()
:
function Biker(t, d) { this.time = t; this.distance = d; this.getSpeed = function() {return this.time / this.distance;}; }
在此示例中,要创建一个需要以下两条信息(或称作参数)才能完成工作的函数:t
和 d
。当调用该函数创建对象的新实例时,会将这些参数传递给它。下面的代码创建 Biker 对象的两个实例,名称分别为 emma
和 hamish
。
emma = new Biker(30, 5); hamish = new Biker(40, 5);
在面向对象的脚本中,类可以按照特定的顺序相互接收属性和方法,这称为继承。您可以使用继承来扩展或重新定义类的属性和方法。从其它类继承属性和方法的类称为子类。向其它类传递属性和方法的类称为超类。类可以既是子类又是超类。
对象是一种复杂的数据类型,它包括零个或多个属性和方法。每个属性都有名称和值,就像变量一样。属性附加在对象上,并且包含可以更改和检索的值。这些值可以是任何数据类型:字符串、数字、布尔值、对象、影片剪辑或未定义。下列属性属于各种不同的数据类型:
customer.name = "Jane Doe"; customer.age = 30; customer.member = true; customer.account.currentRecord = 000609; customer.mcInstanceName._visible = true;
对象的属性也可以是对象。在上面示例的第 4 行,account
是对象 customer
的属性,而currentRecord
是对象 account
的属性。currentRecord
属性的数据类型是数字。