flash代码如何做出星星闪烁效果(淡出淡入 要求用代码!代码!!不是补间!! 10

 我来答
他是上善若水
2017-03-19 · TA获得超过285个赞
知道小有建树答主
回答量:311
采纳率:84%
帮助的人:136万
展开全部

首先是要绘制星星,在flash中有绘制星形的工具,那么用代码是怎么实现呢?星形实则是规则的凸多边形。因为是规则的画的时候只要依次算出凹点的坐标和凸点的坐标,就可以画出星形了。代码如下:

package 
{
import flash.display.Shape;
import flash.events.Event;

public class star extends Shape
{
private var alp:Number = 0;//透明度变化量
public var speed:int = Math.random ()*10+10;//随机速度
//参数分别是:小半径,大半径,边数,填充色,透明值,弧度
public function star(r:Number ,R:Number ,n:int ,fillcolor:uint ,alp:Number ,a:Number =0)
{
this.graphics.moveTo(r,0);
//开始填充;
this.graphics.beginFill(fillcolor,alp);

for (var i:Number =0; i<n; i++)
{
a +=  Math.PI / n;
this.graphics.lineTo(R*Math.cos (a),R*Math.sin(a));
a +=  Math.PI / n;
this.graphics.lineTo(r*Math.cos (a),r*Math.sin(a));
}
}
}
}

下面我们再来补上闪烁的代码:

package 
{
import flash.display.Shape;
import flash.events.Event;

public class star extends Shape
{
private var alp:Number = 0;//透明度变化量
public var speed:int = Math.random ()*10+10;//随机速度
//参数分别是:小半径,大半径,边数,填充色,透明值,弧度
public function star(r:Number ,R:Number ,n:int ,fillcolor:uint ,alp:Number ,a:Number =0)
{
this.graphics.moveTo(r,0);
//开始填充;
this.graphics.beginFill(fillcolor,alp);

for (var i:Number =0; i<n; i++)
{
a +=  Math.PI / n;
this.graphics.lineTo(R*Math.cos (a),R*Math.sin(a));
a +=  Math.PI / n;
this.graphics.lineTo(r*Math.cos (a),r*Math.sin(a));
}
this.addEventListener(Event.ENTER_FRAME,loopAlp);

}
private function loopAlp(e:Event ):void
{
this.rotation +=  Math.random() * 20 - 10;
if (this.alpha > 0.9)
{
alp = 0;

}
else if (this.alpha <=0.0)
{

alp = 1;

}

this.alpha +=  (alp - this.alpha) / speed;//渐变透明度(代码实现淡入淡出的一种方法)
//trace(sta.alpha )
}

}

}

上面的2个实例是actionscript3.0类文档,保存名为:star.这个类做好了,在flash中运用也是非常简单的,新建一个actionscript3.0文件,给它绑定一个名为:flie.的类文档(别告诉我你不会!真的不会?再问!)。在文档中输入代码:

package 
{
import flash.display.Sprite;

public class flie extends Sprite
{

public function flie()
{
for (var i:int=0; i<17; i++)
{
var r:Number = Math.random() * 1 + 2;
var R:Number = Math.random() * 4 + 7;
var n:Number = Math.floor(Math.random() * 9) + 4;
var u:uint = Math.floor(Math.random() * 0xffffff) | 0xcccccc;
var al:Number = Math.random() * 1.5 + 0.5;
var sta:star = new star(r,R,n,u,al);
sta.x = Math.random() * stage.stageWidth;
sta.y = Math.random() * stage.stageHeight / 2;
addChild(sta);

}
}

}

}

全部保存,测试影片,这是你想要的效果吗?

a,太复杂了,我看不懂,能解释一下代码含义吗?

b,我对as3.0不感兴趣!

c,这更本不是我想要看的的效果,答非所问!

楚懿瑶
2017-03-19 · TA获得超过5020个赞
知道大有可为答主
回答量:6917
采纳率:84%
帮助的人:1832万
展开全部
思路是控制透明度alpha和缩放scaleX/scaleY
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式