Flash AS 3.0菜鸟学飞教程:含有多个类的AS3类文件

AS3.0含有多个类的AS3类文件

标准的AS3类文件是以".as"为结尾的纯文本文件。一个类文件可以包含一个或多个类定义,甚至可以直接写入一次性执行的语句。AS3中,在package花括号外,可以定义一个或多个Class,不可与文件同名。这些花括号外的类,称为当前类文件的包外类。只有当前类文件中的成员可以访问。

包外类的产生,每个.as文件被编译器看成一个编译单元,每个编译单元只能有一个对外可见的Class, 那么package{}之外的Class就对外不可见了。

为什么需要包外类?

第一,我们可以将包外类看成当前文件的“私有类”,。比如,可以将当前类中的一些复杂逻辑单独抽出来做成类,如果这些抽出来的逻辑只和这个当前类相关,不需要外部介入,那么就可将这些类定义成包外类。

第二,由于包外类对外部完全不可见,在AS3中有它特有的用处,比如,AS3不支持private和protected的构造函数,要想真正实现单例模式(Singleton),就可以用上包外类了。

基本结构如下:

1.代码:
2.

3.package {
4.class MyClass {
5.function MyClass() {
6.var helper:MyHelper = new MyHelper();
7.}
8.}
9.}
10.class MyHelper {
11.function MyHelper() {
12.var helper:HelpersHelper = new HelpersHelper();
13.}
14.}
15.class HelpersHelper {
16.function HelpersHelper () {
17.}
18.}

注意:在包块中最多只能定义一个类。在同一个文件中的辅助类不是包块的一部分,并且只能在此文件中可见和被使用。

下面我们将我们将我们的类改写成上述的packge类形式。我们将下面的代码都写在一个DocumentClass.as的文件中,然后在fla文件中的属性面板中的Document Class输入框中输入DocumentClass类名。

1.代码:
2.

3.package {
4.import flash.display.MovieClip;
5.import flash.display.Sprite;
6.import flash.events.MouseEvent;
7.// Document Class
8.public class DocumentClass extends MovieClip {
9.private var _circle:Drag_circle;
10.private const maxBalls:int=100;
11.public function DocumentClass() {
12.var i:int;
13.for (i=0; i <= maxBalls; i++) {
14._circle=new Drag_circle ;
15._circle.scaleY=_circle.scaleX=Math.random();
16._circle.x=Math.round(Math.random() * stage.stageWidth -
17.

18._circle.width);
19._circle.y=Math.round(Math.random() * stage.stageHeight -
20.

21._circle.height);
22.addChild(_circle);
23.}
24.}
25.}
26.}
27.import flash.display.Sprite;
28.import flash.events.MouseEvent;
29.class Drag_circle extends Sprite {
30.private var _circle:Sprite;
31.public function Drag_circle() {
32._circle=new Sprite ;
33._circle.graphics.beginFill(0xff0000);
34._circle.graphics.drawCircle(-5,-5,10);
35._circle.graphics.endFill();
36.addChild(_circle);
37.this.buttonMode=true;
38._circle.addEventListener(MouseEvent.CLICK,onClick);
39._circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
40._circle.addEventListener(MouseEvent.MOUSE_UP,onUp);
41.}
42.private function onClick(event:MouseEvent):void {
43.trace("circle clicked");
44.}
45.private function onDown(event:MouseEvent):void {
46._circle.startDrag();
47.}
48.private function onUp(event:MouseEvent):void {
49._circle.stopDrag();
50.}
51.}

可以测试你的影片了。

时间: 2024-09-13 21:16:11

Flash AS 3.0菜鸟学飞教程:含有多个类的AS3类文件的相关文章

Flash AS 3.0菜鸟学飞教程:载入库中的影片剪辑

学习AS3.0菜鸟起飞之-载入库中的影片剪辑 在Flash创作环境中,可以从库中拖拽影片剪辑到舞台上,使它们出现在SWF文件中.当使用ActionScript 来添加影片剪辑时,实际上也是将影片添加一个实例到时间轴上.帧是时间轴的一部分,你可以使用动作面板将as代码与帧关联.因此时间轴成了用as代码添加的显示对象的父容器,除非另一个显示对象被指定. 添加一个影片剪辑到当前时间轴: 下面的例子从.fla库中导入一个名为"鹰"的影片剪辑 1.新建Flash文档(AS3),存盘. 2.打开&

Flash AS 3.0菜鸟学飞教程:类的编写之时间轴代码转换为外部类

我们已经了解了在Flash CS3 中如何在时间轴上编写代码,那么如何将时间轴上的代码转换为外部类,以及Flash CS3 的文档类形式,接下来我们进一步的来研究编写类及外部as文件的方式. include 如果你了解AS1.0,AS2.0 编程,那么对include一定不陌生,在Actionscript 3.0中我们仍可以使用include 来导入代码. 例: 1.打开flash新建一个文档.保存为drag_inclue.fla在场景中创建一个影片剪辑,本例中使用的小球,将其转换为影片剪辑,并

Flash AS 3.0菜鸟学飞教程:用反射动态创建实例

使用new运算符创建对象或实例时,直接调用了某个具体类的构造函数,而在编写程序时,经常需要动态地创建类的实例,这时可以使用反射来创建实例. 例如,如果仅知道某个实例,而不知道实例对应的类,就可以用反射来创建实例.AS3中的所有类都属于Class类型,例如,MovieClip是一个Class,Bitmap也是一个Class. 例: 1.新建一个Flash文档 2.单击图层第一帧,打开动作面板,输入代码: //动态得到类的构造函数 var classcontructor:Class = MovieC

Flash AS 3.0菜鸟学飞教程:类的编写之不使用库元件

AS3.0 类的编写(不使用库元件) 在上一讲中我们使用的是已创建好的影片剪辑,并在库中做类的链接,这对有复杂图形的创作是比较好的选择,如果你能熟练的应用绘图API绘制出你想要的任意图形,就可以不使用库元件,直接在类中编写.下面我们用这种方式编写类代码: 创建一个DocumentClass类(创建100个随机摆放的圆) 1.代码: 2. 3.package { 4. 5.import flash.display.MovieClip; 6.public class DocumentClass ex

Flash AS 3.0菜鸟学飞教程:间隔循环的三种表现方式

学习AS3菜鸟起飞吧之-间隔循环 如果想使动画不依赖于帧频,可使用3种方法. 1.setlnterval()函数 setlnterval()函数作用是每隔一定的时间,就调用函数 setlnterval()函数的形式为: setlnterval(函数名,时间间隔,函数参数): 函数名是自定义的函数的名,时间间隔为毫秒,函数参数是自定义函数的参 下面制作一个计时器: //时间的初始值 var t:int; //定义一个无参函数 function time() { //输出时间 trace(++t /

Flash AS 3.0菜鸟学飞教程:创建Bitmap类

本系列Flash教程为Flash新手制作,更多教程和练习请点击这里,在这里有系列的教程.练习,并有老师对练习进行点评与指导,欢迎朋友们的光临! 在学习中遇到问题请到 论坛 发贴交流! 创建Bitmap类的实例 Bitmap类与位图操作有关,一般来说,Bitmap类应与BitmapData类一起使用. 例: 1.打开Flash,新建一个Flash文档. 2.选择一张图片,导入到库. 3.打开库面板,右键链接,在类文本框中输入BigPhoto,单击"确定"按钮. 上面的操作,实际是创建一个

Flash AS 3.0菜鸟学飞教程:帧循环学习实例

多帧循环 Flash中的帧在默认情况下是循环执行的,租用gotoAndPlay()函数可以实现简单的帧循环,而实现代码的重复执行. gotoAndPlay()函数的用途是控制或改变影片剪辑的播放流程,如果在影片的第1帧画面中放置需要重复执行的程序,然后在第2帧加入gotoAndPlay(1)语句.反复执行第1帧画面的程序,那么gotoAndPlay()函数就构成了一个循环程序结构. gotoAndPlay()函数没有条件判断功能,是无条件重复的循环结构.但可以和if语句一起使用.形成具有判断终止

Flash AS 3.0菜鸟学飞教程:创建自定义类

在ActionScript 3 中,类是最基本的编程结构,所以必须先掌握编写类的基础知识.所有的类都必须放在.as文件中,每个as文件里只能定义一个public 类,而且类名要与文件名相同.比如:你的类名为Example ,那么文件名必须为Example.as. 在ActionScript 3.0 中所有的类都必须放在包中.包是对类进行分类的单位,其意义相当于文件系统的目录.包路径相对于classpath(类路径), 默认的类路径就是项目的根目录,因此顶级的包目录就是项目根目录.包声明如下: p

Flash AS3.0菜鸟学飞教程代码的位置

早期版本的ActionScript代码可以写在帧.按钮.影片剪辑.as文件等位置,而Flash AS3.0代码的位置发生了重大的改变,只能写在帧及as文件中. 虽然Flash AS3.0支持把代码写在时间轴中,但在实际应用中,如果把很多的代码放在时间轴中,会导致代码很难管理.或者说,用类来组织大量的代码更为合适,因为类代码都是放在as文件中的. 除了把代码放在时间轴上,还可以把代码放在外部文件中,比如,放在服务器的txt文件中,然后把这些外部数据加载到fla文件里. 外部文件代码 以往都是在时间