Flint粒子库使用(三)

 在前面两篇的教程基础上  接下来 我们来创建  一束草   demo :  http://flintparticles.org/swf2/Grass.swf

 

 

 

首先 我们创建发射器emitter

 

var emitter :Emitter2D = new Emitter2D();

//下面我们创建渲染环境 这里用的渲染环境是 BitmaplineRenderer   这种渲染环境一般用来创建 头发丝 草 等一些纤细的对象

//它的使用和上个例子中的DisplayObjectRender相似

var   render:BitmaplineRenderer = new BitmapLineRenderer(new Rectangle( 0, 0, 500, 500 ));//渲染环境为500*500大小

//将其添加进舞台

addChild(render);

//下面我们把ermitter对象放入渲染环境中  并确定它的坐标位置

render.addEmitter(emitter);

emitter.x= stage.stageWidth/2;

emitter.y=stage.stageHeight+50;

// 由于草堆的底部是由圆组成的 ,这里我们用的Zone 是DiscZone, DiscZone 类确定一个圆形区域

var zone:DiscZone = new DiscZone(new Point(0,0),40);//point(0,0)是其的中心坐标 40是草堆的外部最大的圆形区域

//创建position

var position :Position = new Position (zone);

//添加进emitter

 emitter.addInitializer(position);//此时DiscZone添加进ermitter,DiscZone在舞台上的坐标        是 x=DiscZone.centerX+ermitter.x  y=DiscZone.centerY+ermitter.y                              

 

//下面我们添加速度velocity

/*

velocity的介绍:velocity的创建 与zone有关 :

 

使用指定了的一个方向的一个确定的速度  用PointZone (上两篇教程就是用的它)   假如要一个方向使用不同的速度 用到的是LineZone

在多个方向上使用固定的速度 用到的是DiscZone或者DiscSectorZone .  在不同的方向上使用不同的速度,只需在DiscZone或者DiscSectorZone 的构造函数设个随机数即可  (在内外半径加上随机数,使半径变化,从而达到速度的变化)

DiscSectorZone(center:Point = null, outerRadius:Number = 0, innerRadius:Number = 0, minAngle:Number = 0, maxAngle:Number = 0)  即里面的 outerRadius  innerRadius参数改成随机数即可   最后两个参数 是角度 角度在minAngle

和maxAngle之间随机变化

 

*/

//创建DiscSectorZone

var discSectorZone:DiscSectorZone = new  DiscSectorZone (new Point(0,0),80,40, -5 * Math.PI / 8, -3 * Math.PI / 8 );

emitter.addInitializer(new Velocity(discSectorZone));

//使用counter

emitter.counter= new Blast(100);

//创建粒子对象的颜色

emitter.addInitializer(new ColorInit(0xFF006600, 0xFF009900));

 

 

//下面创建动作  由于草堆不能永远的长下去 必须设定一个界限 用Age  和Lifetime确定它的生长时间

//首先创建动作Move

emitter.addAction(new Move());

 

emitter.addInitializer(new Lifetime(7));//生长时间为七秒

emitter.addAction(new Age())//Age用来计算它用的时间 时间到了就停止运动

 

//我们在粒子对象进行缩放  它随着Age进行缩放

emitter.addAction(new ScaleImage(4,1));//  4 表示开始时的大小  1  表示结束时的大小 (1是正常大小,4是原来的4倍)

// 下面我们模仿力的作用 给它加上加速度 这里我们加上重力加速度

emitter.addAction(new Accelerate(0,10));

 

//最后发射

emitter.start();

 

 

所有的代码如下:

import flash.geom.Point;
import org.flintparticles.common.counters.*;
import org.flintparticles.common.displayObjects.RadialDot;
import org.flintparticles.common.initializers.*;
import org.flintparticles.twoD.actions.*;
import org.flintparticles.twoD.emitters.Emitter2D;
import org.flintparticles.twoD.initializers.*;
import org.flintparticles.twoD.renderers.*;
import org.flintparticles.twoD.zones.*;
import org.flintparticles.twoD.renderers.*;
import org.flintparticles.common.actions.*;

 

var emitter :Emitter2D = new Emitter2D();
var render:BitmapLineRenderer=new BitmapLineRenderer(new Rectangle(0,0,500,500));
addChild(render);

render.addEmitter(emitter);

emitter.x=250;

emitter.y=300;
var zone:DiscZone=new DiscZone(new Point(0,0),40);
var position:Position=new Position(zone);
emitter.addInitializer(position);
var discSectorZone:DiscSectorZone=new DiscSectorZone(new Point(0,0),80,40,-5*Math.PI/8,-3*Math.PI/8);
emitter.addInitializer(new Velocity(discSectorZone));
emitter.counter=new Blast(100);
emitter.addInitializer(new ColorInit(0xFF006600, 0xFF009900));
emitter.addAction(new Move());
emitter.addInitializer(new Lifetime(7));
emitter.addAction(new Age());
emitter.addAction(new ScaleImage(4,1));
emitter.addAction(new Accelerate(0,10));
emitter.start();

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值