当前位置:软件学习 > Flash >>

Flash5ActionScript教程 四十二

b>使用自定义对象

  Flash 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属性的数据类型是数值型。或者说,account本身是个对象,它拥有自己的属性currentRecord;account对象也属性,它附属于customer对象。

创建对象

  可以用new操作符从构造函数(或称结构体函数)创建对象。构造函数的名字总是与所创建的对象相同。 例如,用来创建account(帐号)对象的结构体的名字应该是Account。下面的语句从称为 MyConstructorFunction的构造函数创建一个新的对象:
new MyConstructorFunction (argument1, argument2, ... argumentN);
  当 MyConstructorFunction函数被调用时,Flash给它传递一个隐藏的参数this,这个参数是对MyConstructorFunction正在创建的对象的引用。当你定义一个结构体时,参数this使你能够引用该结构体将要创建的对象。例如,下面的函数就是创建circle对象的构造函数:
function Circle(radius) {
this.radius = radius;
this.area = Math.PI * radius * radius;
}  构造函数常常被用来填写对象的方法:
function Area() {
this.circleArea = MAth.PI * radius * radius;
}  要在脚本中使用一个对象,必须把该对象赋给一个变量。要创建一个新的半径是5的圆对象,使用new操作符创建该对象,并把它赋给局部变量myCircle:
var myCircle = new Circle(5);
  注:对象的作用范围与所赋给的变量的作用范围相同。

创建继承

  在Flash 5中,所有函数都有一个prototype(原型)属性,该属性在定义函数时自动创建。当使用构造函数创建新的对象时,该结构体的prototype属性的所有属性和方法变成了新对象的__proto__属性的属性和方法。 prototype属性指明了用该函数创建的对象的默认属性值。使用__proto__和prototype属性传递值就称为继承。

  继承根据明确的等级进行。当调用对象的属性或方法时,动作脚本首先查看该对象是否拥有该元素。如果该元素不存在,动作脚本查看该对象的__proto__属性以获得相应的信息(对象.__proto__)。如果被调用的属性不是该对象的__proto__对象的属性,动作脚本查看对象.__proto__.__proto__。

  通过把方法赋给对象的prototype属性的方式把方法指派给对象是一种常见的做法。下面的步骤说明怎样定义一个范例方法:

1 定义构造函数Circle(圆):
function Circle(radius) {
this.radius = radius;
}
2 定义Circle对象的area(面积)方法。area方法将计算circle的面积。你可以使用函数常量(如下例中的 Math.PI)来定义area方法,并设置该圆的原型对象的面积属性:
Circle.prototype.area = function () {
return Math.PI * this.radius * this.radius;
}
3 创建Circle对象的实例:
var myCircle = new Circle(4);
4 调用新的myCircle对象的area方法,如下所示:
var myCircleArea = myCircle.area()
动作脚本查找myCircle对象的area方法。因为该对象没有area方法,所以就查找它的原型对象 Circle.prototype的area方法。动作脚本找到它,并调用它。

  也可以通过把方法指派给对象的各个实例的方式,把方法指定给对象,如下例所示:
function Circle(radius) {
this.radius = radius;
this.area = function() {
return Math.PI * this.radius * this.radius;
}
}  这种技术一般不推荐使用。通常,使用prototype对象更有效,因为仅需定义一个area,且该定义被自动拷贝到 Circle函数创建的所有实例中。

  prototype属性需要Flash 5和或更高版本支持。


上一个:Flash5ActionScript教程 四十三
下一个:Flash5ActionScript教程 四十一

更多Flash疑问解答:
今天教大家学会用U5制作成翻页相册
Flash MX 2004 ActionScript图文教程(九)
Flash MX 2004 ActionScript图文教程(八)
Flash MX 2004 ActionScript图文教程(七)
Flash MX 视频导入功能详解
Flash5 画任意直线教程
FLASH -- 关于变量的问题FLASH -- 关于变量的问题
Flash本地加密
flash场景之间相互跳转的实现方法
Flash那样动感十足制作PPT按钮跟我来
Flash Mx使用技巧十二则
使用Flash mx制作旋转的时钟效果
PowerPoint中插入Flash动画的方法
用FlashMX制作拖动悬浮窗口
在Flash中巧妙替换字体
Dreamweaver
Fireworks
FrontPage
Flash
Photoshop
Coreldraw
Excel
Word
Powerpoint
outlook
wps
AfterEffects
3D MAX
Director
Authorware
PremierePro
Foxmail
Maya
ISA
会声会影
其它软件
AutoCAD
如果你遇到软件学习难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,