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,0,1);
this.graphics.endFill();
var matrix:Matrix = new Matrix();
matrix.createGradientBox(10, 10, 0, 0, 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,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);
}
}
这种效果比较小,相比那些强烈的粒子表现还是欠缺,不过小特效,就让它代码少一点就行,然而还可以产生一些比较有意思的效果,即可达到这个实验的目的,又不失去乐趣。根据上次的代码,加以小小改造。会创造一种闪闪发光的效果。
它的基本思路:先对粒子进行一个随机分布,让它出现在预设的位置上,然后产生圆周运动。在运动过程当中,加入随机的想法。在这里,我想告诉大家,这种随机可以创造出很多意想不到的效果。加入的随机,可以对坐标随机,深度随机,透明度随机,大小随机,颜色随机,等等这些都可以加入去。在实验过程当中,多尝试这些组合就可以变化出很多效果。