750 likes | 948 Views
第 8 章 使用 FLASH 中的内置类. 本章介绍如何在 ActionScript 2.0 中使用和编写类。类是 ActionScript 2.0 的主要部分,类在 ActionScript 2.0 中的作用比它在较早版本的 Macromedia Flash 中更为重要。 Flash 8 有许多内置类,你可以在代码中使用这些内置类,利用这些内置类可以方便地向应用程序添加交互功能。 你还可以创建自己的自定义类,以及如何在 Flash 文档中使用自定义类。. 教学内容. 8.1 使用类 8.2 核心类 8.3 影片类.
E N D
第8章使用FLASH中的内置类 本章介绍如何在 ActionScript 2.0 中使用和编写类。类是ActionScript 2.0 的主要部分,类在 ActionScript 2.0 中的作用比它在较早版本的 Macromedia Flash 中更为重要。 Flash 8 有许多内置类,你可以在代码中使用这些内置类,利用这些内置类可以方便地向应用程序添加交互功能。 你还可以创建自己的自定义类,以及如何在 Flash 文档中使用自定义类。
教学内容 8.1 使用类 8.2 核心类 8.3 影片类
8.1 使用类 类是面向对象编程思想的核心内容。 在现实生活中,房、车、路、桥、虫、鱼、鸟、兽等都是对象,AS中的对象是对现实生活中实际问题的抽象化,类是抽象化的对象在AS中的表现形式,例如:时间被抽象化成办置Date类,我们可以通过Date类的方法和属性来解决与时间有关的问题。 对于没有定义成内置类的对象,可以通过自定义类来抽象化,例如人定义成People类、鱼定义成Fish类等。
对象总是具有一定的特性,例如鱼的重量、长度是其特性。对象也具有特定的动作,如游泳是鱼的一个动作。在将实际对象抽象化类时,对象的特性和动作往往也被抽象化,对象的特性被抽象化类的属性,对象的动作被抽象化类的方法。对象总是具有一定的特性,例如鱼的重量、长度是其特性。对象也具有特定的动作,如游泳是鱼的一个动作。在将实际对象抽象化类时,对象的特性和动作往往也被抽象化,对象的特性被抽象化类的属性,对象的动作被抽象化类的方法。 在AS中,类的属性用变量表示,类的方法用函数表示,属性和方法统称为类成员。 类的属性和方法可以通过类和类实例进行访问,直接通过类进行访问的类成员是静态类成员,如Math类,它的所有属性和方法都是静态的,可以直接通过类名调用,如Math.PI (圆周率属性),Math.abs()(绝对值方法)。 对于非静态类成员,必须先创建类的实例,然后通过实例来访问。
8.1.1创建自定义类 假若想要在程序中存储多份人员(people)数据,且每一份数据都包含下表所列的字段: 我们可以自定义一个名为People的类,来包含并存储这些数据,语法如下:
class People{ var fullName:String; var age:Number; } 说明: 1、自定义类以class关键字开头,类名称的第一个英文字 母通常用大写。 2、自定义类一定要写在影片外部,扩展名为.as 的纯文 本文件中。 3、在保存AS文件时,文件名应该和自定义类的类名一模 一样,包括大小写,且必须存放在与应用此类的.fla 文件相同的文件夹中。
编写好自定义的 People类后,就可在Flash影片中,通过此People类来建立人员数据。 方法为:在影片的关键帧上输入下面的代码 var user1:People=new People(); user1.fullName=“李红"; user1.age=19; 注意:此影片文件一定要保存在和People.as相同的文件夹中。 虽然自定义类写在影片外部,但是在导出影片文件时,外部代码就会和其它代码一起编译到.swf里面,所以在上传.swf影片时,并不需要另外传递.as文件。
8.1.2创建类的属性和方法 类的成员包括属性和方法,所有属性和方法都必须在类体(大括号)内声明,否则编译时将出现错误。 在AS文件中声明类的属性的方式与在“动作”面板中声明变量的方式相似,声明类的方法的方式与在“动作”面板中声明函数的方式相似。 如:class People{ var fullName:String; var age:Number; function showInfo(){ //方法定义 } }
8.1.3构造函数 构造函数是用于初始化类的属性和方法的函数,类的构造函数是一个特殊的函数,使用 new 运算符创建类的实例时将自动调用该函数。 构造函数的名称与包含它的类的名称相同。 如:class People{ var fullName:String; var age:Number; function People(n:String,a:Number){ this. fullName=n; this.age=a; } } 调用时:var user1:People=new (“小赵”,18);
编写构造函数时应考虑以下几点: 1、如果未明确声明任何构造函数(也就是说,如果未创建名称与类名相同的函数),编译器将自动创建一个空构造函数。 2、一个类只可以包含一个构造函数;ActionScript 2.0 中不允许重载构造函数。 3、构造函数不应具有返回类型。
8.1.4 控制成员访问 默认情况下,类的所有属性和方法都可被任何其它类访问:类的所有成员默认都是公共成员。但是,某些情况下你可能需要保护类的数据和方法,不让其它类访问。即需要将这些成员指定为私有成员,只有声明或定义这些成员的类才能访问它们。
可以使用 public 或 private 成员属性来指定公共或私有成员。 例如,以下代码声明一个私有变量(一个属性)和一个私有方法(一个函数)。 class LoginClass { private var userName:String; private function getUserName (){ return this.userName; } }
私有成员(属性和方法)只能由定义这些成员的类和该原始类的子类访问。 私有成员(属性和方法)只能由定义这些成员的类和该原始类的子类访问。 原始类的实例,不能访问声明为私有成员的属性和方法;也就是说,私有成员只能在类定义中访问;而不能在实例级别上访问。
8.2 核心类 在“动作”面板中,核心类位于“ActionScript 2.0 类”->“核心”节点下,是内置的类。 包括 Array、Boolean、Date、Error、Function、Math、Number、Object、String 和 System。 一些内置的ActionScript 类是顶级类,用户可以直接使用顶级类的方法和属性,而不用创建该类的实例。 其它的内置类,则需要使用new运算符和构造器函数来创建该类的实例,然后才可以使用它的方法和属性。
8.2.1Array类 Array 类使你可以访问并操作数组,要使用数组需先构造数组。请使用构造函数 new Array() 格式为: var 数组名= new Array(); var 数组名= new Array(元素的个数); var 数组名= new Array(初值1,初值2,初值3,初值4….);
Array 类包含的操作数组的方法如下: 1、join([string]) :将数组的各项转化为字符串后以string(默认为“,”)为分隔符连接成字符串返回。 如:a = [[1, 2], ‘a’]则a.join(‘+’)返回“1,2+a”。 2、push(expression1, ..., expressionN) :堆栈压入。将expression1...expressionN的各值为新的项加至myArray末尾,并返回添加后myArray的项数。 3、pop() :堆栈弹出。删除myArray的最末项并返回该项的值。 4、unshift(expression1, ..., expressionN) :队列压入。将expression1...expressionN的各值为新的项加至myArray开头,并返回添加后myArray的项数。
5、shift() :队列弹出。删除myArray的首项并返回该项的值。 6、concat(expression1, ..., expressionN):将expresion1... expressionN的各值为新的项加到myArray之后(myArray不改变),返回添加后的新数组。 7、slice(begin_num, [end_num]):截取myArray的第begin_num项到第end_num项(默认为myArray的项数)并组成新的数组返回(不包括第end_num项)。begin_num和end_num为负表示从最后项倒数回去的序号。
8、splice(begin_num, del_num, [expression1, ..., expressionN])从myArray的第begin_num项开始删除del_num项,然后将expression1...expressionN的各值为新的项插入到myArray第begin_num项的位置。返回删除的各项所组成的数组。= myArray.sort([order_func]) 9、sort([order_func]):对myArray的各项进行排序,返回myArray的引用。 10、reverse():将myArray的项反序排列。返回myArray的引用。
8.2.2Boolean类 Boolean 类是针对布尔值的操作,使用Boolean 类可获取 Boolean 对象的原始数据类型或字符串表示形式。 必须使用构造函数 new Boolean() 创建 Boolean 对象后,然后才能调用其方法。 Boolean 类的方法: toString():返回 Boolean 对象的字符串表示形式(“true” 或 “false”); valueOf():返回指定 Boolean 对象的原始值类型。
8.2.3 Date类 Date类提供了获取或修改日期及时间的功能。 格式如下: 实例名=new Date() ; (注:获取的时间是本地电脑的系统时间和日期) 实例名=new Date(年,月,日,时,分,秒,毫秒);
Date类的方法: getYear :返回简写年份。 getFullYear :返回完整的 4位数年份。 getMonth:返回月份。 getDate:返回日期。 getHours :返回小时数。 getMinutes:返回分钟数。 getSeconds:返回秒数。 getMilliseconds:返回毫秒数。 getDay方法返回星期数,星期日返回 0,星期一返回1,以此类推。
8.2.4 Function类 Function类可根据用户的指定名称来调用已经定义好的函数 。 Function类包括两个方法和一个属性。 Function.apply():使AS代码可以调用该函数 Function.call():用Function对象来调用函数 Function.prototype:一个类原形的引用
8.2.5Math类 Math类是一个顶级类,不必使用构造函数即可使用其方法和属性。 Math 类的所有属性和方法都是静态的,使用该类的方法和属性可以访问和处理数学常数和函数。 格式为: Math.常数; Math.函数名(参数);
Math类的常数有以下几个: Math.PI:圆周率(大约为 3.141593)。 Math.SQRT2:2的平方根(大约为 1.414214)。 Math.E:欧拉(Euler)常数,自然对数的底(大约为2.718282)。 Math.LN2:2的自然对数(大约为 0.693147)。 Math.LN10:10 的自然对数(大约为2.302585)。 Math.LOG2E:e的以 2为底的对数(大约为 1.442695)。 Math.LOG10E:e的以 10 为底的对数(大约为0.434294)。
Math类的函数为: Math.abs:用来计算一个数的绝对值; Math.round:将一个浮点数四舍五入为最接近的整数; Math.ceil :取比一个浮点数大且最接近的整数; Math.floor :取比一个浮点数小 且最接近的整数; Math.min :取两个数中较小的一个数; Math.max :取两个数中较大的一个数; Math.pow:用来计算一个数的乘方,它包含两个参数,第 1个参数是底数(要乘方的数),第 2 个参数是幂(乘方数)。 Math.sqrt :计算一个数的平方根,
8.2.6Number类 Number 类是 Number 数据类型的简单包装对象。使用与 Number 类关联的方法和属性可以操作基本数值。此类与 JavaScript Number 类完全相同。 Number 类的方法: toString() :返回 Number 对象的字符串表示形式。 valueOf() :返回 Number 对象的原始值。
8.2.7String类 String 类是字符串基本数据类型的包装,提供用于操作基本字符串值类型的方法和属性。 即可以使用 String() 函数将任何对象的值转换为字符串。 String类的属性只有一个: length:它返回所指定的 String 对象中的字符数,是一个整数。
String类的方法有以下几个: charAt(index) :返回由参数 index 指定的位置处的字符。 charCodeAt(index) :返回字符串中指定位置的字符的ASCII码。 toLowerCase() :将所有大写字符均转换为小写字符。 toUpperCase() :将所有小写字符均转换为大写字符。 substr(start, length) :返回字符串中从 start 参数所指定的索引开始,直至 length 参数所指定的字符数为止的字符。 substring(start, end) :返回一个字符串,该字符串由 start 和 end 参数指定的两点之间的字符组成。
8.3 影片类 影片类是与整个影片动画控制相关的类函数。 在“动作”面板中,影片类位于“ActionScript 2.0 类”->“影片”节点下,是内置的类。 包括 Button、Color、Key、Mouse、Sound、Stage、TextField等。
8.3.1 Button类 Button 类提供用于处理按钮的方法、属性和事件处理函数,SWF 文件中的所有按钮元件都是 Button 对象的实例 。 用法:在属性检查器中指定按钮实例名称,并通过动作脚本使用 Button 类的方法和属性来操纵按钮。 格式为: 按钮实例名.方法; 按钮实例名.属性名=属性值
Button 类的方法只有一个: getDepth():返回按钮实例的深度。 Button 类的属性有以下几个: Alpha:按钮实例的透明度值。 enabled:指示按钮是否处于活动状态。 focusrect:指示具有焦点的按钮四周是否有黄色矩形。 Name:按钮实例的实例名称。 rotation:按钮实例的旋转度数。 tabEnabled:指示某按钮是否包括在 Tab 键的自动排序中。 tabIndex:指示对象的 Tab 键顺序。
8.3.2 Capabilities类 Capabilities类主要用于设置Flash Player的功能。 格式为: 类名.属性函数=设置值;
Capabilities类的属性主要有: 1、Manufacturer: 一个字符串,用于表示 Flash Player 制造商。 2、pixelAspectRatio: 表示屏幕的像素高宽比。 3、playerType :表示播放器的类型( 独立、外部、插件或 ActiveX。) 4、screenColor: 指明屏幕是彩色、灰度还是黑白的。5、screenDPI: 表示屏幕的分辨率,以像素为单位(如 dpi)。
8.3.3 Color类 Color 类可用于获取和设置影片剪辑对象的 RGB 颜色值。 必须使用构造函数 new Color() 创建 Color 对象后,才可调用其方法。 格式为: 对象名= new Color(目标实例名); 对象名.方法 说明:目标实例名是指由Color对象控制颜色的影片剪辑实例的路径。
Color 类的方法有4个: setRGB() :为 Color 对象设置 RGB 值的十六进制表示形式。 setTransform() :为 Color 对象设置颜色转换。 getRGB(): 返回由最后一次 setRGB() 调用设置的 RGB 数值。 getTransform() :返回由最后一次 setTransform() 调用设置的转换信息。 如:var myColor = new Color(target); myColor .setRGB(0x112233); 0x 告知编译器该数字是十六进制。
8.3.4 Key类 Key 类提供用于获取有关键盘和按键的信息的方法和属性。 Key 类是不通过构造函数即可使用其方法和属性的顶级类。 格式为: Key.方法 Key .属性 在键盘事件发生时,所按键的代码被捕捉到,并可通过Key 类的getCode或 getAscii方法来判断具体按下的 是哪个键。
Key 类的方法有6个: addListener():注册一个对象,以便在调用 onKeyDown 和 onKeyUp 方法时接收通知。 getAscii():返回按下的最后一个键的 ASCII 值。 getCode():返回按下的最后一个键的虚拟键控代码。 isDown():当按下参数中指定的键时返回 true。 isToggled():当激活 Num Lock 键或 Caps Lock 键时返回 true。 removeListener():删除以前用 addListener() 注册的对象。 Key 类的所有属性都是常量,表示所使用的键盘按键。
8.3.5 Mouse类 Mouse 类在 SWF 文件中提供对鼠标的控制。 Mouse 类是不通过构造函数即可访问其属性和方法的顶级类。 你可以使用 Mouse 类的方法来隐藏和显示 SWF 文件中的鼠标指针(光标)。默认情况下鼠标指针是可见的,但是你可以将其隐藏并实现用影片剪辑创建的自定义指针。 格式为: Mouse.方法
Mouse类的方法有: addListener():注册一个对象以接收 onMouseDown、onMouseMove 和 onMouseUp 通知。 hide():隐藏 SWF 文件中的鼠标指针。 removeListener():删除用 addListener() 注册的对象。 show():在 SWF 文件中显示鼠标指针。
8.3.6影片剪辑类 MovieClip 类的方法提供的功能与定位影片剪辑的动作所提供的功能相同。 无需使用构造函数方法即可调用 MovieClip 类的方法 。 格式为: 影片剪辑实例名.方法
MovieClip 类的方法介绍: 1、attachMovie方法 功能:附加库中的 SWF 文件 。 格式:实例名.attachMovie(目标标识符, 新实例名,层次参数,属性类) ; 说明: 目标标识符:库中要附加到舞台上某影片剪辑的影片剪辑元件的链接名称 。 属性类:使动态创建的影片剪辑能够接收剪辑参数 ,此参数是可选的 。
提示: attachMovie方法和duplicateMoveClip方法具有相同的功能,不同的是attachMovie方法不依靠舞台上现有的影片剪辑实例,而是直接将库中的元件添加到动画场景中。 要通过attachMovie方法添加到场景中的元件必须具有链接目标标识符。
2、createEmptyMovieClip方法 功能:创建作为现有影片剪辑子级的空影片剪辑 。 格式: 实例名. createEmptyMovieClip(新实例名,层次参数); 说明: 新实例名:标识新影片剪辑的实例名称的字符串 。
3、createTextField方法 功能:创建一个新的、空文本字段 。 格式: 目标位置. createTextField(“实例名”,层次参数,X坐标,Y坐标,宽度,高度) ; 说明: 目标位置:实例名或主场景 。 如: _root.createTextField("mytext",1,100,100,300,100);
4、duplicateMovieClip方法 功能:复制影片剪辑 。 格式: 实例名.duplicateMovieClip(“新实例名”,层次参数); 5、getBytesLoaded方法 功能:获得已加载影片剪辑的字节数 。 格式: 目标影片剪辑. getBytesLoaded();
6、getBytesTotal方法 功能:获得欲加载影片剪辑的总字节数 。 格式: 目标影片剪辑. getBytesTotal (); 7、getDepth方法 功能:获得目标影片剪辑的层次系数 。 格式: 目标影片剪辑.getDepth();
8、getDepth方法 功能:获得目前影片剪辑的层次系数 。 格式: 目标影片剪辑. getDepth(); 9、setMask方法 功能:设置影片剪辑的遮罩层 。 格式: 目标影片剪辑. setMask(遮罩目标影片剪辑);
可以使用 MovieClip 类的方法在舞台上绘制线条和填充,从而可以为用户创建绘画工具,并且可以在影片中绘制响应事件的形状。绘画方法如下表:
10、beginFill方法 功能:单一颜色的填充,同时可指定填充色的 alpha 值 。 格式: 目标影片剪辑. beginFill ([rgb[, alpha]]) ; 说明: rgb:十六进制颜色值(例如,红色是 0xFF0000 ) alpha:0 到 100 之间的整数。
11、beginGradientFill方法 功能:渐变颜色的填充。 格式: 目标影片剪辑.beginGradientFill(“渐变类型”,颜色,Alpha,分配参数,变换矩阵) ; 说明: 渐变类型:“linear” 或 "radial"。 分配参数:颜色配额的数组;有效值范围为 0 到 255 。 变换矩阵:用来定义单位渐变的缩放、平移、旋转和倾斜。