Flash编写类及外部as文件的方式

2019-10-08 17:22:54于海丽

}
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. 同时这个例子中,与上例一样,我们并没有使用As3.0的Document Class特性.
动态类(dynamic class)
此种编写的类的方式与探索Actionscript3.0 flash9 Preview教程中的例子是一样的,此种方式是最最常用的.对于一些稍复杂的程序来说,是由主类和多个辅助类组成的.辅助类封装分割开的功能,主类用来显示和集成各部分功能。如上例我们已经封装了小球的拖动功能。现在我们想要创建100个这样可以拖动的小球。
如下演示:

思路是我们已经创建了封装了拖动功能的类,我们在创建一个主类,用来显示这100个具有拖动功能的小球,我们将使用As3.0的DocumnetClass 新特性.
如下:我们将主类命名为DocumentClass.as, 封装后的拖动球功能我们命名为Drag_class.as.
DocumentClass.as
代码:

package {

import flash.display.MovieClip;

public class DocumentClass extends MovieClip {

// 属性
private var _circle:Drag_circle;
private var _wslink:wslink;
private const maxBalls:int = 100;
// 构造函数
public function DocumentClass(){
var i:int;
// 循环创建小球
for(i=0;i<=maxBalls; i ){
// 创建可拖动小球的实例
_circle = new Drag_circle();
// 设置小球实例的一些属性
_circle.scaleY = _circle.scaleX = Math.random();
// 场景中的x,y位置
_circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width));
_circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height));
// 在场景上显示
addChild(_circle);
}
}

}
}


Drag_circle.as类
代码:

package {

import flash.display.Sprite;
import flash.events.MouseEvent;

public class Drag_circle extends Sprite {

public function Drag_circle(){

this.buttonMode = true;
this.addEventListener(MouseEvent.CLICK,onClick);
this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.addEventListener(MouseEvent.MOUSE_UP,onUp);