Flint粒子库使用(一)

 

 flint 例子库下砸地址

http://code.google.com/p/flint-particle-system/downloads/list

 

 

 

用法:

 

流程 :

可以将ermitter对象看成是一种发射器 而渲染环境则是发射器所在的环境 用initializers初始化函数来确定粒子的 速度 位置以及粒子的 形态   

 

 

首先要导入类:

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.*;

 

 

 

 

 

Ermitter  粒子发射器

 

创建:

 

var ermitter :Emitter2D = new Emitter2D()//创建二维的ermitter对象

下面是渲染环境的创建:用到的渲染环境是DisplayObjectRender 这种渲染环境

var render :DisplayObjectRender= new DisplayObjectRender()

//将渲染环境放入舞台:

addChild(render);

//将发射器放入渲染环境中

render.addErmitter(ermitter);

 

 

 

Counter (类似于flash中的帧) 作用创建新的粒子

 

emitter.counter = new Steady( 100 ); // 表示每秒创建100个粒子

 

 

 

 

Initializers 函数  作用是确定;粒子出现在屏幕上的区域位置 粒子的表现形态 颜色 运动速度(包含大小和方向)

 

 

 

下面是粒子的表现形态的创建 

 

我们可以用图片作为例子的表现形态    假如图片的实例名为 photo    我们可以这样创建:

var imgClass :ImageClass = new ImageClass(photo);

 

下面我们创建 表现形态不使用外部图片 使用flint 内置的  RadialDot 类(渐变的圆形)

 

下面创建一个半径为2的圆点

var imgClass:ImageClass = new ImageClass(RadiaDot,2);// 后面的2 是该圆点半径的大小

 

// 下面将这种表现形态 imgClass 放入发射器ermitter中

 

ermitter.addInitializer(imgClass);

 

 

 

我们也可以直接一步到位:

emitter.addInitializer( new ImageClass( RadialDot, 2 ) );

 

使用Zone 来确定粒子位置区域 和它的速度 :

 

 

位置Position 的确定需要使用区域Zone  ,   在 org.flintparticles.twoD.zones  包里有定义各种各样的区域Zone 。

Zone 的区域就是粒子出现在屏幕上的位置:

下面我们使用 LineZone    ,让粒子从舞台的上方落下来

// 创建区域:

var   zone :LineZone = new LineZone(new Point(-5,-5), new Point(505,-5)); // 舞台的宽式500pixel

//位置的创建

var position:Position = new Position (zone);

//下面将位置放入发射器之中

ermitter.addInitializer(position);

 

 

下面我们来确定速度的大小和方向  用到的是 PointZone 即它只有一个点 它和原点(0,0)组成一个向量 该向量的方向就是粒子速度的方向,速度的大小就是向量的大小 (注意:单位是像素)。

 

下面是速度的创建方法:

 

var pointZone :PointZone = new PointZone(new Point(0,65));//  速度的方向垂直向下,大小为65像素

var velocity:Velocity = new Velocity(pointZone);

//将其放入发射器ermitter中

ermitter.addInitializer(velocity);

也可以这样写:

emitter.addInitializer( new Velocity( new PointZone( new Point( 0, 65 ) ) ) );
 有了上诉的准备 我们还需要添加动作Action 
Action 的作用是更新每帧粒子的位置 它的用法相当简单 如下:
var move :Move = new Move(); //创建动作
//放入到ermitter发射器中
ermitter.addAction(move);
或者直接这样写:
ermitter.addAction( new Move() );
//最后加上
ermitter.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.*;

var emitter:Emitter2D = new Emitter2D();

var renderer:DisplayObjectRenderer = new DisplayObjectRenderer();
addChild( renderer );
renderer.addEmitter( emitter );

emitter.counter = new Steady( 100 );

emitter.addInitializer( new ImageClass( RadialDot, 2 ) );
emitter.addInitializer( new Position( new LineZone( new Point( -5, -5 ), new Point( 505, -5 ) ) ) );
emitter.addInitializer( new Velocity( new PointZone( new Point( 0, 65 ) ) ) );

emitter.addAction( new Move() );

emitter.start();
 
 
 
 
 
 
续......
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值