来源:西安优业 发布时间:2012/6/19 浏览次数:1290次
主要是用计算鼠标跟随对象来产生具有一定规律的星火特效。 思路:导入背景素材,然后制作出焰火飘落特效。创建文档类,产生鼠标跟随的多角星形特效;创建元件类的扩展类,产生随机大小的火花效果。
一、火飘落特效制作焰 (1)新建一个大小为500×300像素,帧频为30fps的空白文档。按Ctrl+R组合键导入本书配套光盘中的"Chapter08/素材/西湖夜景。jpg"文件,然后设置其坐标为(0,0),如图1所示,再采用前面的方法在"属性"面板中添加Main文档类。
图5拷贝并缩放图形
(6)返回到"场景1",按Ctrl+F8组合键新建一个影片剪辑(名称为 Magic_mc),再设置填充类型为"放射状",第1个色标颜色为(R:255,G:255,B:255),第2个色标颜色为 (R:255,G:255,B:204),第3个色标颜色为(R:255,G:204,B:0),第4个色标颜色为(R:255,G:102,B:0),第5个色标颜色为(R:153,G:0,B:0),Alpha为0%,然后按住Alt键的同时使用"矩形工具"以该影片剪辑中心点为起点绘制一个如图6所示的矩形。 图6绘制矩形
图7复制图形
图8复制图形
图9应用滤镜效果
请点击"下一页",我们创建元件类,添加控制代码。 二、创建元件类添加控制代码
图10添加元件类 (2)新建一个ActionScript文件,将其命名为Main,然后将其保存在该实例的文件夹中,再输入控制代码。 /** *该类为主程序类 *@authorlbynet *@version0.1 */ package{ importflash.display.Sprite; importflash.display.MovieClip; importflash.events.Event; importflash.events.MouseEvent; importflash.ui.Mouse; publicclassMainextendsSprite{ privatevarstar:MovieClip; publicfunctionMain(){ Mouse.hide(); this.star=newStar_mc(); addChild(star); stage.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler); } privatefunctionmoveHandler(e:MouseEvent):void{ this.star.x=stage.mouseX; this.star.y=stage.mouseY; var_mc=newMagic_mc(); _mc.x=stage.mouseX; _mc.y=stage.mouseY; addChild(_mc); _mc.addEventListener(Event.ENTER_FRAME,RemoveDrop); } privatefunctionRemoveDrop(event:Event){ var_mc:MovieClip=event.targetasMovieClip; 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文件,然后输入控制代码。 /** *该类为扩展元件类 *@authorlbynet *@version0.1 */ package{ importflash.display.MovieClip; importflash.events.Event; publicclassMagic_mcextendsMovieClip{ privatevardis:Number; publicfunctionMagic_mc(){ init(); } privatefunctioninit(){ varRandom=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); } privatefunctionenterFrameHandler(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方法进行舍入并取得整数,这样当鼠标指针由下往上移动时,就会产生星火飘落的效果。 第30行代码是为火花加入y轴坐标方向上的一个固定加速度,而第31行代码则是火花在x轴坐标方向上的一个-5~5之间的随机加速度值。 (4)按Ctrl+Enter组合键发布程序。 图1导入背景
图2绘制圆形
图3绘制多角星形
|
【大 中 小】【打印】【关闭】 |