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();
}

}
}

打开我们之前所用过的fla文件,将其另存为drag_class.fla文件,与Document.as和Drag_class.as类所在目录相同。打开库面板,选中库面板中的小球,右击选择链接在class名称处输入Drag_class.注意与上面的元件类不同在于,我们不需要让场景中有任何内容,因为我们已在主类DocumentClass.as中动态的贴加和显示了circle_mc.。在DocumentClass.fla中的主场景中,在属性面板中的Document Class输入框中输入我们的主类名DocumentClass.然后你就可以测试了。
不使用库元件的动态类(dynamic class with no library)
在上例中我们使用的是已创建好的影片剪辑,并在库中做了类的链接,这种情况对于一些有复杂图形的情况下是比较好的选择,如果你能很熟练的应用Drawing Api绘制出你想要的任意图形,那么你也可以不使用库元件,可以直接在类中编写,在本教程中我们主要研究的是这种方式,接下来我们看不使用库元件如何编写类来实现上面的功能。
很显然即然不使用库中的元件,那么我们就需要在类中直接使用Drawing Api来直接绘制。如下,类的结构与动态类是相同的。我们需要在上例的基础上做些改动
首先删去fla中场景中的所有内容,包括库中的内容。

DocumentClass.as类如下:
代码:

package {

import flash.display.MovieClip;
public class DocumentClass extends MovieClip {
private var _circle:Drag_circle;
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();

_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.display.Shape;
import flash.events.MouseEvent;
public class Drag_circle extends Sprite {

private var _circle:Sprite;

public function Drag_circle(){

_circle = new Sprite();
_circle.graphics.beginFill(0xff0000);
_circle.graphics.drawCircle(-5, -5, 10);
_circle.graphics.endFill();
_circle.buttonMode =true;
addChild(_circle);


_circle.addEventListener(MouseEvent.CLICK,onClick);
_circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown);