日期:2013-2-2 浏览次数:20194次

aiyiweb核心提示:Flash编写类及外部as文件的方式.

我们曾经了解到了在flash 9中如可在时间线上编写代码,如何将现有的时间线上的代码转换为外部类.以及flash9的Document Class方式,接下来我们要更细一步的来研讨编写类及外部as文件的方式.

include

如果你之前了解As1.0,As2.0编程,那么对include一定不陌生,在Actionscript 3.0中我们仍可以使用include 来导入代码.
如下的例子:


1.打开flash新建一个文档,保存为drag_inclue.fla在场景中创建一个movieclip,本例中使用的圆球,将其转换为影片剪辑,并在场景中将其命名为circle_mc. 不需求在库中设置链接属性.
2.新增一层,按下F9打开Actionscript面板,在其中输入代码如下:
代码:


//设置当光标移到circle_mc上时显示手形
circle_mc.buttonMode = true;
// 侦听事件
circle_mc.addEventListener(MouseEvent.CLICK,onClick);
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
circle_mc.addEventListener(MouseEvent.MOUSE_UP,onUp);
//定义onClick事件
function onClick(event:MouseEvent):void{
     trace("circle clicked");
}
//定义onDown事件
function onDown(event:MouseEvent):void{
     circle_mc.startDrag();
}

function onUp(event:MouseEvent):void{
     circle_mc.stopDrag();
}

 

3.将此帧上的代码全部选中,按下ctrl+x剪切掉,选择flash的new菜单,新建一个Actionscript文件,在刚剪切掉的代码贴上.保存名为drag_include.as.与drag_include.fla在同一路径下.
4.回到drag_include.fla中,在第一帧上输入如下代码:
include "drag_include.as"
测试影片即可以看到与时间线上测试时相反的结果了.此种方式,在As1.0时经常使用.如果你仍习惯这种方式,在Actionscript 3.0中仍可以使用.

元件类(symbol class)

      这里所说的元件件类,实际是指为flash影片中的元件指定一个链接类名.它与上面的include 的不同之处于,它使用的是严厉的类结构.而不是我们习惯上的时间线编写方式.我们要将小圆球的拖动功用封装起来,这样不论你创建多少可以拖动的小球,都会变得很轻松,只需求创建它的实例并显示出来即可。
我们仍使用上例来说明问题.打开drag_include.fla文件,将其另存为Symbol_class.fla文件,新建一个Actionscript文件,将其保存为Symbol_class.as文件,与Symbol_class.fla文件在相反目录下。如今我们将上面的例子中的代码笼统成类如下:
代码:


package {
    
     import flash.display.MovieClip;
     import flash.events.MouseEvent;
     public class Symbol_class extends MovieClip {
         public function Symbol_class(){
            
             this.buttonMode = true;
             this.addEventListener(MouseEvent.CLICK,onClick);
             this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
             this.addEventListener(MouseEvent.MOUSE_UP,onUp);
            
         }
         private function onClick(event:MouseEvent):void{
             trace("circle clicked");
         }
         private function onDown(event:MouseEvent):void{
             this.startDrag();
         }
         private function onUp(event:MouseEvent):void{
             this.stopDrag();
         }
     }
}

 

由于我们将类的名称设置为Symbol_class,所以此类文件一定要保存为Symbol_class.as文件.我们还要做一步任务,在源文件中打开库面板,右击circle_mc选择链接,复选Export for Actionscript.在class处输入Symbol_class.as即让我们类与元件相关连..此时测试影片,你会看到与上例中相反的结果.这里留意一点,场景中仍要保证circle_mc的存在.由于在代码中我们并没有动态的贴加circle_mc. 同时这个例子中,与上例一样,我们并没有使用A