Actionscript 3.0基础教程1-类的编写
作者: egoldy性质: 原创阅读次数: 25044 发表时间: 2007-02-20 06:23:21
此教程是在上一篇探索Actionscript3.0 flash9 Preview教程的基础上写的.如果你还没有读过探索Actionscript3.0 flash9 Preview,请先读上一篇教程之后,在读此教程,在此教程中,我们根据上一篇教程中的例子,来研究编写的类的各种方式,以适应一些不同的情况.
1.打开flash新建一个文档,保存为drag_inclue.fla在场景中创建一个movieclip,本例中使用的圆球,将其转换为影片剪辑,并在场景中将其命名为circle_mc. 不需要在库中设置链接属性.?
//设置当光标移到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在同一路径下.? 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. 同时这个例子中,与上例一样,我们并没有 使用As3.0的Document Class特性.? 思路是我们已经创建了封装了拖动功能的类,我们在创建一个主类,用来显示这100个具有拖动功能的小球,我们将使用As3.0的DocumnetClass 新特性.? 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,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(); } } } 打开我们之前所用过的fla文件,将其另存为drag_class.fla文件,与Document.as和Drag_class.as类所在目录相同。 打开库面板,选中库面板中的小球,右击选择链接在class名称处输入Drag_class.注意与上面的元件类不同在于,我们不需要让场景中有任何内 容,因为我们已在主类DocumentClass.as中动态的贴加和显示了circle_mc.。在DocumentClass.fla中的主场景中, 在属性面板中的Document Class输入框中输入我们的主类名DocumentClass.然后你就可以测试了。? 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); } } } } 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); _circle.addEventListener(MouseEvent.MOUSE_UP,onUp); } private function onClick(event:MouseEvent):void{ trace("circle clicked"); } private function onDown(event:MouseEvent):void{ _circle.startDrag(); } private function onUp(event:MouseEvent):void{ _circle.stopDrag(); } } } 注意Drag_circle.as类,我们只是增加了一段: _circle = new Sprite(); _circle.graphics.beginFill(0xff0000); _circle.graphics.drawCircle(-5,10); _circle.graphics.endFill(); 还有就是构造函数之前的声明:private var _circle:Sprite;? package { class MyClass { function MyClass() { var helper:MyHelper = new MyHelper(); } } } class MyHelper { function MyHelper() { var helper:HelpersHelper = new HelpersHelper(); } } class HelpersHelper { function HelpersHelper () { } } 注意,在包块中最多只能定义一个类。在同一个文件中的辅助类不是包块的一部分,并且只能在此文件中可见和被使用。? package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.MouseEvent; // Document Class 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); } } } public class Drag_circle extends Sprite { private var _circle:Sprite; public function Drag_circle(){ _circle = new Sprite(); _circle.graphics.beginFill(0x6D6E71); _circle.graphics.drawCircle(-5,10); _circle.graphics.endFill(); addChild(_circle); this.buttonMode = true; _circle.addEventListener(MouseEvent.CLICK,onUp); } private function onClick(event:MouseEvent):void{ trace("circle clicked"); } private function onDown(event:MouseEvent):void{ _circle.startDrag(); } private function onUp(event:MouseEvent):void{ _circle.stopDrag(); } } } 现在就可以测试你的影片了。? By egoldy: 在此教程中我们只是研究类的编写方式,了解了类的编写方式,我们就可以在后面的编写工作针对不同的情形进行类的编写了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |