求大神详解Flash 烟花代码。

varFireTimer:Timer=newTimer(1000);FireTimer.addEventListener(TimerEvent.TIMER,addFire... var FireTimer:Timer=new Timer(1000);
FireTimer.addEventListener(TimerEvent.TIMER,addFire);
FireTimer.start();
var tempRo:Number;
function addFire(e:TimerEvent):void
{
var X:Number=Math.random()*550;
var Y:Number=Math.random()*400;
var color:uint=0xffffff* Math.random();
trace(color.toString());
for(var i:int=0;i<100;i++)
{
var mc :MovieClip=new MovieClip();
mc.graphics.beginFill(color);
mc.graphics.drawCircle(0,0,4+3* Math.random());
mc.graphics.endFill();
addChild(mc);
mc.x=X;
mc.y=Y;
mc.scaleX=mc.scaleY=0.4+Math.random()*0.6;
tempRo=Math.random()*360/180;
mc.spdX=Math.random()*10*Math.sin(tempRo)*Math.pow(-1,Math.floor(Math.random()*100)%2);
mc.spdY=Math.random()*10*Math.cos(tempRo)*Math.pow(-1,Math.floor(Math.random()*100)%2);
mc.addEventListener(Event.ENTER_FRAME,FireMove);
}
}
function FireMove(e:Event):void
{
var obj:Object=e.target;
obj.x+=obj.spdX;
obj.y+=obj.spdY;
obj.alpha-=0.05;
if(obj.alpha<=0)
{
obj.removeEventListener(Event.ENTER_FRAME,FireMove);
}
}
展开
 我来答
Keensb
推荐于2016-01-07 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:739万
展开全部
var FireTimer:Timer=new Timer(1000);//创建一个定时器,每1000毫秒(即1秒)触发一次
FireTimer.addEventListener(TimerEvent.TIMER,addFire);//给定时器注册侦听,当定时器触发时执行addFire函数
FireTimer.start();//计时器开始运作
var tempRo:Number;//创建一个临时的数字对象,记录烟花的角度
function addFire(e:TimerEvent):void
{
var X:Number=Math.random()*550;//创建一个随机的横坐标值,范围在 0~550间
var Y:Number=Math.random()*400;//创建一个随机的纵坐标值,范围在 0~550间
var color:uint=0xffffff* Math.random();//创建一个随机的颜色值,范围在0x000000~0xffffff之间(这是一个16进制的数值)
trace(color.toString());//在调试面板输出颜色的值,测试用
for(var i:int=0;i<100;i++)
{
var mc :MovieClip=new MovieClip();//创建烟花的实体
mc.graphics.beginFill(color);//用刚才的随机颜色填充烟花的内容
mc.graphics.drawCircle(0,0,4+3* Math.random());//绘制烟花的形状(圆形),半径在(4 + 0) ~ (4 + 3)之间,即4~7之间。
mc.graphics.endFill();//终止填充颜色
addChild(mc);//把烟花加载到场景里,使其可见
mc.x=X;//给烟花的横坐标赋值,X就是刚才随机生成的横坐标值
mc.y=Y;//给烟花的纵坐标赋值,Y就是刚才随机生成的纵坐标值
mc.scaleX=mc.scaleY=0.4+Math.random()*0.6;//烟花的长宽在 (0.4 + 0)~(0.4 + 0.6)倍之间随机缩放,即随机缩放为原大小的0.4~1倍
tempRo=Math.random()*360/180;//创建烟花的随机角度
mc.spdX=Math.random()*10*Math.sin(tempRo)*Math.pow(-1,Math.floor(Math.random()*100)%2);//根据随机角度,随机创建烟花沿x轴移动的矢量值,其值为 -10~10之间,记录在mc的动态变量spdX中
mc.spdY=Math.random()*10*Math.cos(tempRo)*Math.pow(-1,Math.floor(Math.random()*100)%2);//根据随机角度,随机创建烟花沿y轴移动的矢量值,其值为 -10~10之间,记录在mc的动态变量spdY中
mc.addEventListener(Event.ENTER_FRAME,FireMove);//给烟花注册帧事件函数,在FireMove函数中同步烟花的效果
}
}
function FireMove(e:Event):void
{
var obj:Object=e.target;//创建一个对象,获得注册事件的对象(烟花)的索引,这个obj就是烟花mc
obj.x+=obj.spdX;//烟花的x坐标每一帧递增spdX个单位,obj.spdX就是刚才的mc.spdX
obj.y+=obj.spdY;//烟花的y坐标每一帧递增spdY个单位,obj.spdY就是刚才的mc.spdY
obj.alpha-=0.05;//烟花每一帧的透明度衰减5%
if(obj.alpha<=0)//当烟花的透明度小于或等于0时
{
obj.removeEventListener(Event.ENTER_FRAME,FireMove);//注销烟花的帧事件
//建议这里增加一行代码 removeChild(MovieClip(obj)),从场景里移除已经看不见的烟花,节省资源
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式