(2)新建一个ActionScript文件,将其命名为Main,然后将其保存在该实例的文件夹中,再输入控制代码。
/** * 该类为主程序类 * @author lbynet * @version 0.1 */ package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.ui.Mouse; public class Main extends Sprite { private var star:MovieClip; public function Main() { Mouse.hide(); this.star = new Star_mc(); addChild(star); stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); } private function moveHandler(e:MouseEvent):void { this.star.x = stage.mouseX; this.star.y = stage.mouseY; var _mc = new Magic_mc(); _mc.x = stage.mouseX; _mc.y = stage.mouseY; addChild(_mc); _mc.addEventListener(Event.ENTER_FRAME, RemoveDrop); } private function RemoveDrop(event:Event) { var _mc:MovieClip = event.target as MovieClip; if (_mc.scaleX <= 0) { _mc.removeEventListener(Event.ENTER_FRAME, RemoveDrop); removeChild(_mc); } //trace(this.numChildren) } } } |
技巧与提示:
该文档类基本包含了“星星洒落”实例中Main文档类的知识,此外第18行代码为Mouse类的hide()方法,用于隐藏鼠标指针,在使用该方法前必须先导入Mouse类(如第11行代码)。
该文档类定义了一个私有属性Star,第19行代码是为该属性赋值,值为所创建的元件类(Star_mc),并将其添加到显示列表中(如第20行代码),而24和25行代码是为该元件类应用鼠标跟随效果。
(3)同样新建一个ActionScript文件,然后输入控制代码。
/** * 该类为扩展元件类 * @author lbynet * @version 0.1 */ package { import flash.display.MovieClip; import flash.events.Event; public class Magic_mc extends MovieClip { private var dis:Number; public function Magic_mc() { init(); } private function init() { var Random = 1 + Math.round(Math.random()*4); this.gotoAndStop(Random); this.scaleX = this.scaleY = Math.random(); //产生随机数-5到5之间的随机数 dis = Math.round((Math.random()-.5)*10); this.addEventListener(Event.ENTER_FRAME,enterFrameHandler); } private function enterFrameHandler(event:Event) { this.y += 5; this.x += dis; this.scaleX -=.005; this.scaleY -=.005; } } } |
技巧与提示:
第19和20行代码是为该元件类创建一个1~5之间的随机数,使该影片剪辑元件类在实例化(被创建时)时将播放头移到并停止在指定的时间帧上。
Math.random()方法产生0~1之间的随机数,Math.random()*4方法返回到0~4之间的随机数,而Math.round()方法用于向上或向下舍入为最接近的整数并返回该值,所以1+Math.round(Math.random()*4)方法取得1~5之间的随机整数值;gotoAndStop()语句使影片剪辑的播放头移到并停止在指定的时间帧上。
通过使用Math.random()-0.5 方法来生成-0.5~0.5之间的随机数,然后乘以10得到-5~5之间的随机数,再使用Math.round方法进行舍入并取得整数,这样当鼠标指针由下往上移动时,就会产生星火飘落的效果,如图8-11所示。
图8-11 星火飘落效果
第30行代码是为火花加入y轴坐标方向上的一个固定加速度,而第31行代码则是火花在x轴坐标方向上的一个-5~5之间的随机加速度值。
(4)按Ctrl+Enter组合键发布程序。
进入论坛参与讨论和交作业:http://www.missyuan.com/viewthread.php?tid=424468