加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash 小特效:粒子随机运动

发布时间:2020-12-15 18:41:53 所属栏目:百科 来源:网络整理
导读:? package {import flash.display.Sprite;import flash.geom.*;import flash.display.GradientType;public class Ball extends Sprite{public var speed:Number;public var angle:Number;public var rx:Number;public var ry:Number;public function Ball(){
?
package 
{
	import flash.display.Sprite;
	import flash.geom.*;
	import flash.display.GradientType;

	public class Ball extends Sprite
	{

		public var speed:Number;
		public var angle:Number;
		public var rx:Number;
		public var ry:Number;
		public function Ball()
		{

			this.graphics.beginFill(0xffffff);
			this.graphics.drawCircle(0,1);
			this.graphics.endFill();
			var matrix:Matrix = new Matrix();
			matrix.createGradientBox(10,10,0);
			var colors:Array = [0xCCFF00,0xCCFF00];
			var alphas:Array = [0,255];
			var ratios:Array = [0,0xFF];

			this.graphics.beginGradientFill(GradientType.RADIAL,colors,alphas,ratios,matrix);
			this.graphics.drawCircle(0,2);
			this.graphics.endFill();

		}
	}

}

?

import flash.events.Event;
import flash.display.Sprite;
import flash.filters.GlowFilter;

var pixSprite:Sprite=new Sprite();
addChild(pixSprite);
var list:Array = [];
var perAngle:Number = 2 * Math.PI / 500;
for (var i:int=0; i<500; i++)
{
	var ball:Ball=new Ball();
	ball.x = Math.cos(i*perAngle) * Math.random()*100;
	ball.y = Math.sin(i*perAngle) * Math.random()*100;
	ball.angle = i * perAngle;
	ball.speed = 5;//Math.random() * 5 + 1;
	ball.rx = Math.random() * 100;
	ball.ry = Math.random() * 100;
	ball.z=Math.random()*80;
	ball.filters=[new GlowFilter(0xffffff)]
	pixSprite.addChild(ball);
	list.push(ball);

}
pixSprite.x=(stage.stageWidth-pixSprite.width)*0.7;
pixSprite.y=(stage.stageHeight-pixSprite.height);


addEventListener(Event.ENTER_FRAME,onRun);

function onRun(event:Event):void
{
	var len:int = list.length;
	for (var i:int=0; i<list.length; i++)
	{
		var ball:Ball = list[i] as Ball;
		if (ball)
		{
			ball.x = Math.cos(ball.angle + ball.speed * Math.PI / 180) * (ball.rx );
			ball.y = Math.sin(ball.angle + ball.speed * Math.PI / 180) * (ball.ry );
			ball.speed +=  2;
			ball.scaleX =  ball.scaleY=Math.random();
			ball.alpha -=  0.01;
			if (ball.alpha <= 0)
			{
				if (pixSprite.contains(ball))
				{
					pixSprite.removeChild(ball);
					ball = null;
				}
				list.splice(i,1);
			}
		}
	}

	if (list.length == 0)
	{
		removeEventListener(Event.ENTER_FRAME,onRun);
	}


}


?这种效果比较小,相比那些强烈的粒子表现还是欠缺,不过小特效,就让它代码少一点就行,然而还可以产生一些比较有意思的效果,即可达到这个实验的目的,又不失去乐趣。根据上次的代码,加以小小改造。会创造一种闪闪发光的效果。

??? ??? 它的基本思路:先对粒子进行一个随机分布,让它出现在预设的位置上,然后产生圆周运动。在运动过程当中,加入随机的想法。在这里,我想告诉大家,这种随机可以创造出很多意想不到的效果。加入的随机,可以对坐标随机,深度随机,透明度随机,大小随机,颜色随机,等等这些都可以加入去。在实验过程当中,多尝试这些组合就可以变化出很多效果。

????

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读