《FlashAS3.0第三讲.ppt》由会员分享,可在线阅读,更多相关《FlashAS3.0第三讲.ppt(29页珍藏版)》请在三一办公上搜索。
1、第三讲,Flash ActionScript 3.0面向对象程序设计基础,二维动画设计,链接类,使用链接类可以很方便地从库中导出资源。自动创建链接类自定义链接类,二维动画设计,addChild()方法Flash中的所有可视对象,包括影片剪辑、形状、按钮、文本等都被作为显示对象并自动添加到场景上,但是AS创建一个可视对象时,并不会自动在场景上显示,必须使用addChild()方法将显示对象放到显示列表中。,二维动画设计,定义类的基本格式,package class 类名 var 属性名;(静态、实例)function 方法名()(静态、实例、构造函数),二维动画设计,Class 的构成,1、包路
2、径package关键字(包路径)用package关键字定义项目文件所在的包路径,如果package后面没有包路径的声明,默认路径就是项目目录。如果不在同一目录下,需导入。,二维动画设计,例,Hello.as 位于classes文件夹下,而Hi.as 位于classes的前级目录下,若在Hi中要用到Hello类的话,需使用语句导入。package import classes.Hello;,二维动画设计,Class 的构成,2、Class的名称class类的名称在package花括号内,必须定义一个class。类的名称必须与项目文件名同名。,二维动画设计,Class 的构成,3、类属性(类的访问
3、控制),二维动画设计,Class 的构成,4、属性(包括实例属性和静态属性)(1)实例属性var 属性名称:属性类型=值(2)静态属性Static 关键字,可被视为类的属性。(注意与类属性的区分),二维动画设计,Class 的构成,5、构造函数类中一种特殊的方法,名称必须与类名一致,常用来指定默认值,或设置对象的操作方法,作用是使对象初始化,不能有返回值,但可带参数。可不显式写出,但在编译时会自动生成一个空的构造函数,推荐写出。,二维动画设计,构造函数,构造函数在初始化实例的时候会自动运行,构造函数只能使用public控制访问,若省去public,编译器会默认为public。构造函数不能有返回
4、值,但并不意味着不能使用return语句,只是return后的语句都不能执行。,二维动画设计,Class 的构成,6、方法(包括实例方法和静态方法)(1)实例方法function 方法名称(参数):返回值类型 方法内容(2)静态方法static function 方法名称(参数):返回值类型 方法内容,二维动画设计,属性和方法的属性(访问控制),二维动画设计,类成员的属性的级别,由高至低publicinternalprotectedprivate同一包路径下的的类成员间相互访问,internal相当于public,为默认修饰符,在包外访问会报错。protected能被当前类和当前类的子类访问,
5、与package无关,如果不是当前类的子类,等同于private。,二维动画设计,访问属性和方法,1、静态属性:直接使用静态属性名访问静态属性。如类名.属性名classA.property2、静态方法直接使用静态方法名访问静态方法如类名.方法名classB.functionB(),二维动画设计,访问属性和方法,3、实例属性必须先创建实例(使用new关键字),才能访问实例属性。var classA:类名=new 类名()classA.property4、实例方法必须先创建实例,才能访问实例属性。var classB:类名=new 类名()classB.functionB(),二维动画设计,一个a
6、s文件中设计多个类,package关键字后的花括号内,必须而且只能定义一个 类(当前包的成员类)。在 package 花括号内的类,必须与文件同名。在package 花括号外,可以再定义若干个 Class,但不得与前面的成员类同名,也可以不再定义其他类。花括号外的类,称为当前类文件的包外类,也属于当前包,但只有当前类文件中的成员类可以访问。,二维动画设计,包外类,在package和class的花括号后,可视为包的私有类。dynamic属性可使动态类在运行时添加新属性。package import flash.display.MovieClip;public class sampleClass
7、extends MovieClip。public function sampleClass():void class A dynamic class B,二维动画设计,实例讲解,例1:编写一个小球的链接类,利用带参数的构造函数使之具有相应的编号。,二维动画设计,示例,汽车类职工类几何类圆类Flash特有的文档类,二维动画设计,汽车类,package classes import flash.display.Sprite;public class Car extends Sprite public function Car(x0:Number=0,y0:Number=0)graphics.lin
8、eStyle(0 x0,1);graphics.drawRect(x0,y0,100,20);/在指定位置绘制矩形代表汽车/以上代码为类的构造函数,x0和y0为开始时汽车位置public function moveToXY(x2:Number,y2:Number)/x2和y2为汽车行驶目的地位置this.x=x2;this.y=y2;/this指向自身实例,二维动画设计,职工类,package classes public class Worker public static maxFixYear:uint=30;/最大供职年限,属于整个类public:name:String;/职工姓名pub
9、lic:genda:String;/职工性别public const MAN:String=男;public const WOMAN:String=女;public function Worker(s:String,b:String=MAN):void/构造函数,需要指定姓名和性别,性别默认为男name=s;genda=b;public function work()trace(开始工作-工作中-工作完成);,二维动画设计,get()、set()方法,ActionScript 3.0中提供了get()方法与set()方法来访问私有变量,通过get()方法访问的成员变量属于可读属性,set()方
10、法访问的成员变量具有可写属性,配合两种方法获得读写控制,有利于类的封装。,二维动画设计,get方法,定义一个 getter,它是一种可像属性一样读取的方法。getter 是一个特殊的函数,它将返回使用 var 或 const 关键字声明的属性的值。与其它的方法不同,调用 getter 时不使用括号(),这样 getter 看起来就像是变量。,二维动画设计,package public class Person private var _name:String=lhx;public function get name():String return _name;public function s
11、et name(a:String):void this._name=a;,var p:Person=new Person()trace(p.name)p.name=“hjt”trace(p.name),二维动画设计,几何类圆类,package classes public class Circle private _radius:Number;/存储半径值,不能直接访问private const PI:Number=3.14159;public function get radius():Number return _radius;public function set radius(r:Nu
12、mber)if(r=0)_radius=r;/采用set方法,可以验证数据public function Area():Number return PI*_radius*_radius;,二维动画设计,静态方法访问权限,package class Test var var1:int;static var var2:int;function func():void trace(var1);/正确,实例方法可以访问实例属性trace(var2);/正确,实例方法可以访问静态属性static function func2()trace(var1);/错误,静态方法不能访问实例属性trace(var2
13、);/正确,静态方法只能访问静态属性,同样,静态方法可以调用其他静态方法,而实例方法不能调用静态方法,二维动画设计,文档类,文档类是AS3.0新出现的一种特性,可以使用【属性】面板来实例化。从位置上看,文档类位于显示列表的根。,舞 台,文档类的实例,其他类的实例,二维动画设计,创建Flash文件时,系统会自动创建MainTimeline类,MainTimeline类其实就是文档类,其实例就是主时间轴。MainTimeline类本质是一个继承MovieClip类的文档类。文档类必须直接或间接地继承Sprite类或MovieClip类。,package import flash.display.MovieClip;public class Document extends MovieClip public function Document()trace(stage.numChildren);trace(stage.getChildAt(0);,
链接地址:https://www.31ppt.com/p-5336304.html