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

flash 小特效:粒子向上运动

发布时间:2020-12-15 18:42:39 所属栏目:百科 来源:网络整理
导读:????????? 最近一直忙碌公司的工作,每个周末都很少时间来写博客。最近做了一些实验,记录下来,这种小特效不算很华丽,不过用到在项目当中也是有一点小小意思。 这个特效从一个小球开始的。通过小球运动产生一种比较简单的视角效果。 ???????????????????
????????? 最近一直忙碌公司的工作,每个周末都很少时间来写博客。最近做了一些实验,记录下来,这种小特效不算很华丽,不过用到在项目当中也是有一点小小意思。

这个特效从一个小球开始的。通过小球运动产生一种比较简单的视角效果。

??????????????????? 下面,来试试这种效果,我们先定义一个小球类。

?????????????????

package 
{
	import flash.display.Sprite;
	import flash.geom.*;
	import flash.display.GradientType;

	public class Ball extends Sprite
	{

		public var speed: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();

		}
	}

}


?这个特效的基本思路是:创建一堆的小球,最开始初始他们的随机速度,然后匀速运动,当达到一个预设位置的时候,移除显示列表,并进行删除对象。

?? 创建的粒子对象,只进行向上的运行路线,运动过程,透明度递减,产生一种消失的效果。而对z轴随机也可以产生一种视角的变化,产生一种空间感。

改变预设的初始属性,如速度,等等可以让小球的运动变化更多。

?

?

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

var pixSprite:Sprite=new Sprite();
addChild(pixSprite);
var list:Array = [];
for (var i:int=0; i<500; i++)
{
	var ball:Ball=new Ball();
	ball.x = Math.random() * 80;
	ball.y = Math.random() * 100;
	ball.z = Math.random() * 200;
	ball.speed = Math.random() * 5 + 1;
	pixSprite.addChild(ball);
	list.push(ball);

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


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.y -=  ball.speed;//向上运动
			ball.alpha -=  0.02;
			var dir:int = Math.random() > 0.5 ? 1:-1;
			ball.z -=  Math.random() * 20 * dir;
			if (ball.y < -60)
			{
				if (pixSprite.contains(ball))
				{
					pixSprite.removeChild(ball);
					ball = null;
				}
				list.splice(i,1);
			}
		}
	}

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


}

?

?好,不妨尝试一下,实验制作这种效果。
?

(编辑:李大同)

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

    推荐文章
      热点阅读