1 / 75

第 8 章 使用 FLASH 中的内置类

第 8 章 使用 FLASH 中的内置类. 本章介绍如何在 ActionScript 2.0 中使用和编写类。类是 ActionScript 2.0 的主要部分,类在 ActionScript 2.0 中的作用比它在较早版本的 Macromedia Flash 中更为重要。 Flash 8 有许多内置类,你可以在代码中使用这些内置类,利用这些内置类可以方便地向应用程序添加交互功能。 你还可以创建自己的自定义类,以及如何在 Flash 文档中使用自定义类。. 教学内容. 8.1 使用类 8.2 核心类 8.3 影片类.

gautam
Download Presentation

第 8 章 使用 FLASH 中的内置类

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第8章使用FLASH中的内置类 本章介绍如何在 ActionScript 2.0 中使用和编写类。类是ActionScript 2.0 的主要部分,类在 ActionScript 2.0 中的作用比它在较早版本的 Macromedia Flash 中更为重要。 Flash 8 有许多内置类,你可以在代码中使用这些内置类,利用这些内置类可以方便地向应用程序添加交互功能。 你还可以创建自己的自定义类,以及如何在 Flash 文档中使用自定义类。

  2. 教学内容 8.1 使用类 8.2 核心类 8.3 影片类

  3. 8.1 使用类 类是面向对象编程思想的核心内容。 在现实生活中,房、车、路、桥、虫、鱼、鸟、兽等都是对象,AS中的对象是对现实生活中实际问题的抽象化,类是抽象化的对象在AS中的表现形式,例如:时间被抽象化成办置Date类,我们可以通过Date类的方法和属性来解决与时间有关的问题。 对于没有定义成内置类的对象,可以通过自定义类来抽象化,例如人定义成People类、鱼定义成Fish类等。

  4. 对象总是具有一定的特性,例如鱼的重量、长度是其特性。对象也具有特定的动作,如游泳是鱼的一个动作。在将实际对象抽象化类时,对象的特性和动作往往也被抽象化,对象的特性被抽象化类的属性,对象的动作被抽象化类的方法。对象总是具有一定的特性,例如鱼的重量、长度是其特性。对象也具有特定的动作,如游泳是鱼的一个动作。在将实际对象抽象化类时,对象的特性和动作往往也被抽象化,对象的特性被抽象化类的属性,对象的动作被抽象化类的方法。 在AS中,类的属性用变量表示,类的方法用函数表示,属性和方法统称为类成员。 类的属性和方法可以通过类和类实例进行访问,直接通过类进行访问的类成员是静态类成员,如Math类,它的所有属性和方法都是静态的,可以直接通过类名调用,如Math.PI (圆周率属性),Math.abs()(绝对值方法)。 对于非静态类成员,必须先创建类的实例,然后通过实例来访问。

  5. 8.1.1创建自定义类 假若想要在程序中存储多份人员(people)数据,且每一份数据都包含下表所列的字段: 我们可以自定义一个名为People的类,来包含并存储这些数据,语法如下:

  6. class People{ var fullName:String; var age:Number; } 说明: 1、自定义类以class关键字开头,类名称的第一个英文字 母通常用大写。 2、自定义类一定要写在影片外部,扩展名为.as 的纯文 本文件中。 3、在保存AS文件时,文件名应该和自定义类的类名一模 一样,包括大小写,且必须存放在与应用此类的.fla 文件相同的文件夹中。

  7. 编写好自定义的 People类后,就可在Flash影片中,通过此People类来建立人员数据。   方法为:在影片的关键帧上输入下面的代码 var user1:People=new People(); user1.fullName=“李红"; user1.age=19;   注意:此影片文件一定要保存在和People.as相同的文件夹中。   虽然自定义类写在影片外部,但是在导出影片文件时,外部代码就会和其它代码一起编译到.swf里面,所以在上传.swf影片时,并不需要另外传递.as文件。

  8. 8.1.2创建类的属性和方法 类的成员包括属性和方法,所有属性和方法都必须在类体(大括号)内声明,否则编译时将出现错误。   在AS文件中声明类的属性的方式与在“动作”面板中声明变量的方式相似,声明类的方法的方式与在“动作”面板中声明函数的方式相似。   如:class People{ var fullName:String; var age:Number; function showInfo(){ //方法定义 } }

  9. 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);

  10. 编写构造函数时应考虑以下几点: 1、如果未明确声明任何构造函数(也就是说,如果未创建名称与类名相同的函数),编译器将自动创建一个空构造函数。 2、一个类只可以包含一个构造函数;ActionScript 2.0 中不允许重载构造函数。 3、构造函数不应具有返回类型。

  11. 8.1.4 控制成员访问   默认情况下,类的所有属性和方法都可被任何其它类访问:类的所有成员默认都是公共成员。但是,某些情况下你可能需要保护类的数据和方法,不让其它类访问。即需要将这些成员指定为私有成员,只有声明或定义这些成员的类才能访问它们。

  12.   可以使用 public 或 private 成员属性来指定公共或私有成员。   例如,以下代码声明一个私有变量(一个属性)和一个私有方法(一个函数)。 class LoginClass { private var userName:String; private function getUserName (){ return this.userName; } }

  13.   私有成员(属性和方法)只能由定义这些成员的类和该原始类的子类访问。  私有成员(属性和方法)只能由定义这些成员的类和该原始类的子类访问。 原始类的实例,不能访问声明为私有成员的属性和方法;也就是说,私有成员只能在类定义中访问;而不能在实例级别上访问。

  14. 8.2 核心类   在“动作”面板中,核心类位于“ActionScript 2.0 类”->“核心”节点下,是内置的类。   包括 Array、Boolean、Date、Error、Function、Math、Number、Object、String 和 System。   一些内置的ActionScript 类是顶级类,用户可以直接使用顶级类的方法和属性,而不用创建该类的实例。   其它的内置类,则需要使用new运算符和构造器函数来创建该类的实例,然后才可以使用它的方法和属性。

  15. 8.2.1Array类 Array 类使你可以访问并操作数组,要使用数组需先构造数组。请使用构造函数 new Array()   格式为: var 数组名= new Array(); var 数组名= new Array(元素的个数); var 数组名= new Array(初值1,初值2,初值3,初值4….);

  16. 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的项数。

  17. 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为负表示从最后项倒数回去的序号。

  18. 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的引用。

  19. 8.2.2Boolean类 Boolean 类是针对布尔值的操作,使用Boolean 类可获取 Boolean 对象的原始数据类型或字符串表示形式。   必须使用构造函数 new Boolean() 创建 Boolean 对象后,然后才能调用其方法。 Boolean 类的方法: toString():返回 Boolean 对象的字符串表示形式(“true” 或 “false”); valueOf():返回指定 Boolean 对象的原始值类型。

  20. 8.2.3 Date类 Date类提供了获取或修改日期及时间的功能。 格式如下:  实例名=new Date() ; (注:获取的时间是本地电脑的系统时间和日期) 实例名=new Date(年,月,日,时,分,秒,毫秒);

  21. Date类的方法: getYear :返回简写年份。 getFullYear :返回完整的 4位数年份。 getMonth:返回月份。 getDate:返回日期。 getHours :返回小时数。 getMinutes:返回分钟数。 getSeconds:返回秒数。 getMilliseconds:返回毫秒数。 getDay方法返回星期数,星期日返回 0,星期一返回1,以此类推。

  22. 8.2.4 Function类 Function类可根据用户的指定名称来调用已经定义好的函数 。 Function类包括两个方法和一个属性。 Function.apply():使AS代码可以调用该函数 Function.call():用Function对象来调用函数 Function.prototype:一个类原形的引用

  23. 8.2.5Math类 Math类是一个顶级类,不必使用构造函数即可使用其方法和属性。  Math 类的所有属性和方法都是静态的,使用该类的方法和属性可以访问和处理数学常数和函数。   格式为: Math.常数; Math.函数名(参数);

  24. 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)。

  25. Math类的函数为:  Math.abs:用来计算一个数的绝对值; Math.round:将一个浮点数四舍五入为最接近的整数; Math.ceil :取比一个浮点数大且最接近的整数; Math.floor :取比一个浮点数小 且最接近的整数; Math.min :取两个数中较小的一个数; Math.max :取两个数中较大的一个数; Math.pow:用来计算一个数的乘方,它包含两个参数,第 1个参数是底数(要乘方的数),第 2 个参数是幂(乘方数)。 Math.sqrt :计算一个数的平方根,

  26. 8.2.6Number类 Number 类是 Number 数据类型的简单包装对象。使用与 Number 类关联的方法和属性可以操作基本数值。此类与 JavaScript Number 类完全相同。 Number 类的方法: toString() :返回 Number 对象的字符串表示形式。 valueOf() :返回 Number 对象的原始值。

  27. 8.2.7String类 String 类是字符串基本数据类型的包装,提供用于操作基本字符串值类型的方法和属性。   即可以使用 String() 函数将任何对象的值转换为字符串。 String类的属性只有一个: length:它返回所指定的 String 对象中的字符数,是一个整数。

  28. String类的方法有以下几个: charAt(index) :返回由参数 index 指定的位置处的字符。 charCodeAt(index) :返回字符串中指定位置的字符的ASCII码。 toLowerCase() :将所有大写字符均转换为小写字符。 toUpperCase() :将所有小写字符均转换为大写字符。 substr(start, length) :返回字符串中从 start 参数所指定的索引开始,直至 length 参数所指定的字符数为止的字符。 substring(start, end) :返回一个字符串,该字符串由 start 和 end 参数指定的两点之间的字符组成。

  29. 8.3 影片类   影片类是与整个影片动画控制相关的类函数。 在“动作”面板中,影片类位于“ActionScript 2.0 类”->“影片”节点下,是内置的类。   包括 Button、Color、Key、Mouse、Sound、Stage、TextField等。  

  30. 8.3.1 Button类 Button 类提供用于处理按钮的方法、属性和事件处理函数,SWF 文件中的所有按钮元件都是 Button 对象的实例 。 用法:在属性检查器中指定按钮实例名称,并通过动作脚本使用 Button 类的方法和属性来操纵按钮。  格式为:   按钮实例名.方法; 按钮实例名.属性名=属性值

  31. Button 类的方法只有一个: getDepth():返回按钮实例的深度。 Button 类的属性有以下几个: Alpha:按钮实例的透明度值。 enabled:指示按钮是否处于活动状态。 focusrect:指示具有焦点的按钮四周是否有黄色矩形。 Name:按钮实例的实例名称。 rotation:按钮实例的旋转度数。 tabEnabled:指示某按钮是否包括在 Tab 键的自动排序中。 tabIndex:指示对象的 Tab 键顺序。

  32. 8.3.2 Capabilities类 Capabilities类主要用于设置Flash Player的功能。   格式为:   类名.属性函数=设置值;

  33. Capabilities类的属性主要有: 1、Manufacturer: 一个字符串,用于表示 Flash Player 制造商。 2、pixelAspectRatio: 表示屏幕的像素高宽比。 3、playerType :表示播放器的类型( 独立、外部、插件或 ActiveX。) 4、screenColor: 指明屏幕是彩色、灰度还是黑白的。5、screenDPI: 表示屏幕的分辨率,以像素为单位(如 dpi)。

  34. 8.3.3 Color类 Color 类可用于获取和设置影片剪辑对象的 RGB 颜色值。 必须使用构造函数 new Color() 创建 Color 对象后,才可调用其方法。   格式为:    对象名= new Color(目标实例名); 对象名.方法 说明:目标实例名是指由Color对象控制颜色的影片剪辑实例的路径。

  35. Color 类的方法有4个: setRGB() :为 Color 对象设置 RGB 值的十六进制表示形式。 setTransform() :为 Color 对象设置颜色转换。    getRGB(): 返回由最后一次 setRGB() 调用设置的 RGB 数值。 getTransform() :返回由最后一次 setTransform() 调用设置的转换信息。 如:var myColor = new Color(target); myColor .setRGB(0x112233); 0x 告知编译器该数字是十六进制。

  36. 8.3.4 Key类 Key 类提供用于获取有关键盘和按键的信息的方法和属性。 Key 类是不通过构造函数即可使用其方法和属性的顶级类。   格式为: Key.方法 Key .属性 在键盘事件发生时,所按键的代码被捕捉到,并可通过Key 类的getCode或 getAscii方法来判断具体按下的 是哪个键。

  37. Key 类的方法有6个: addListener():注册一个对象,以便在调用 onKeyDown 和 onKeyUp 方法时接收通知。 getAscii():返回按下的最后一个键的 ASCII 值。 getCode():返回按下的最后一个键的虚拟键控代码。 isDown():当按下参数中指定的键时返回 true。 isToggled():当激活 Num Lock 键或 Caps Lock 键时返回 true。 removeListener():删除以前用 addListener() 注册的对象。 Key 类的所有属性都是常量,表示所使用的键盘按键。

  38. 8.3.5 Mouse类 Mouse 类在 SWF 文件中提供对鼠标的控制。 Mouse 类是不通过构造函数即可访问其属性和方法的顶级类。 你可以使用 Mouse 类的方法来隐藏和显示 SWF 文件中的鼠标指针(光标)。默认情况下鼠标指针是可见的,但是你可以将其隐藏并实现用影片剪辑创建的自定义指针。   格式为: Mouse.方法

  39. Mouse类的方法有: addListener():注册一个对象以接收 onMouseDown、onMouseMove 和 onMouseUp 通知。 hide():隐藏 SWF 文件中的鼠标指针。 removeListener():删除用 addListener() 注册的对象。 show():在 SWF 文件中显示鼠标指针。

  40. 8.3.6影片剪辑类 MovieClip 类的方法提供的功能与定位影片剪辑的动作所提供的功能相同。 无需使用构造函数方法即可调用 MovieClip 类的方法 。   格式为:    影片剪辑实例名.方法

  41. MovieClip 类的方法介绍: 1、attachMovie方法 功能:附加库中的 SWF 文件 。 格式:实例名.attachMovie(目标标识符, 新实例名,层次参数,属性类) ; 说明: 目标标识符:库中要附加到舞台上某影片剪辑的影片剪辑元件的链接名称 。 属性类:使动态创建的影片剪辑能够接收剪辑参数 ,此参数是可选的 。

  42. 提示: attachMovie方法和duplicateMoveClip方法具有相同的功能,不同的是attachMovie方法不依靠舞台上现有的影片剪辑实例,而是直接将库中的元件添加到动画场景中。 要通过attachMovie方法添加到场景中的元件必须具有链接目标标识符。

  43. 2、createEmptyMovieClip方法 功能:创建作为现有影片剪辑子级的空影片剪辑 。 格式: 实例名. createEmptyMovieClip(新实例名,层次参数); 说明: 新实例名:标识新影片剪辑的实例名称的字符串 。

  44. 3、createTextField方法 功能:创建一个新的、空文本字段 。 格式: 目标位置. createTextField(“实例名”,层次参数,X坐标,Y坐标,宽度,高度) ; 说明: 目标位置:实例名或主场景 。 如: _root.createTextField("mytext",1,100,100,300,100);

  45. 4、duplicateMovieClip方法 功能:复制影片剪辑 。 格式: 实例名.duplicateMovieClip(“新实例名”,层次参数); 5、getBytesLoaded方法 功能:获得已加载影片剪辑的字节数 。 格式: 目标影片剪辑. getBytesLoaded();

  46. 6、getBytesTotal方法 功能:获得欲加载影片剪辑的总字节数 。 格式: 目标影片剪辑. getBytesTotal (); 7、getDepth方法 功能:获得目标影片剪辑的层次系数 。 格式: 目标影片剪辑.getDepth();

  47. 8、getDepth方法 功能:获得目前影片剪辑的层次系数 。 格式: 目标影片剪辑. getDepth(); 9、setMask方法 功能:设置影片剪辑的遮罩层 。 格式: 目标影片剪辑. setMask(遮罩目标影片剪辑);

  48. 可以使用 MovieClip 类的方法在舞台上绘制线条和填充,从而可以为用户创建绘画工具,并且可以在影片中绘制响应事件的形状。绘画方法如下表:

  49. 10、beginFill方法 功能:单一颜色的填充,同时可指定填充色的 alpha 值 。 格式: 目标影片剪辑. beginFill ([rgb[, alpha]]) ; 说明: rgb:十六进制颜色值(例如,红色是 0xFF0000 ) alpha:0 到 100 之间的整数。

  50. 11、beginGradientFill方法 功能:渐变颜色的填充。 格式: 目标影片剪辑.beginGradientFill(“渐变类型”,颜色,Alpha,分配参数,变换矩阵) ; 说明: 渐变类型:“linear” 或 "radial"。 分配参数:颜色配额的数组;有效值范围为 0 到 255 。 变换矩阵:用来定义单位渐变的缩放、平移、旋转和倾斜。

More Related