下面我们看看Flint Particle的接口和类的关系。
在Flint Particle中Action是一个接口。
Action:
package org.flintparticles.common.actions
{
import org.flintparticles.common.emitters.Emitter;
import org.flintparticles.common.particles.Particle;
public interface Action
{
function getDefaultPriority():Number;
function addedToEmitter( emitter:Emitter ):void;
function removedFromEmitter( emitter:Emitter ):void;
function update( emitter:Emitter, particle:Particle, time:Number ):void;
}
}
所有要实现Action接口的类都要两输入的元素:Emitter和Particle(发射器和粒子)
然后他们要实现4个基本的方法:
getDefaultPriority():Number;
addedToEmitter( emitter:Emitter ):void;
removedFromEmitter( emitter:Emitter ):void;
update( emitter:Emitter, particle:Particle, time:Number ):void;
《获得默认的优先级;
《加到发射器;
《从发射器移除;
《刷新(发射器、粒子和事件作为参数);
ActionBase implements Action
ActionBase类实现了Action的接口。
package org.flintparticles.common.actions
{
import org.flintparticles.common.emitters.Emitter;
import org.flintparticles.common.particles.Particle;
public class ActionBase implements Action
{
public function ActionBase()
{
}
public function getDefaultPriority():Number
{
return 0;
}
public function addedToEmitter( emitter:Emitter ):void
{
}
public function removedFromEmitter( emitter:Emitter ):void
{
}
public function update( emitter:Emitter, particle:Particle, time:Number ):void
{
}
}
}
ActionBase类实现了Action的接口,把getDefaultPriority()细化了,注意,ActionBase只是一个类,它没有继承任何其他的类。
关键的一点是它实现了接口,这样的类我们可以把很多共性的东西写到里面来,然后再让其他的类继承自它,可以减少代码的书写量,结构更明晰。
ScaleImage extends ActionBase
ScaleImage 继承自 ActionBase
package org.flintparticles.common.actions
{
import org.flintparticles.common.emitters.Emitter;
import org.flintparticles.common.particles.Particle;
public class ScaleImage extends ActionBase
{
private var _diffScale:Number;
private var _endScale:Number;
public function ScaleImage( startScale:Number = 1, endScale:Number = 1 )
{
_diffScale = startScale - endScale;
_endScale = endScale;
}
public function get startScale():Number
{
return _endScale + _diffScale;
}
public function set startScale( value:Number ):void
{
_diffScale = value - _endScale;
}
public function get endScale():Number
{
return _endScale;
}
public function set endScale( value:Number ):void
{
_diffScale = _endScale + _diffScale - value;
_endScale = value;
}
override public function update( emitter:Emitter, particle:Particle, time:Number ):void
{
particle.scale = _endScale + _diffScale * particle.energy;
}
}
}
下面我们生产一个Candle粒子,其他的知识大家可以参考博客的其他文章或者是Flint Particle的其他参数文章,这里我们就不重复了,主要是讨论一下addAction(new ScaleImage(1,1));的功能,这里我们的设置是1、1,也就是说粒子不缩放了。
我们留意ScaleImage的两个参数。
package
{
import org.flintparticles.common.actions.*;
import org.flintparticles.common.counters.*;
import org.flintparticles.common.displayObjects.Dot;
import org.flintparticles.common.initializers.*;
import org.flintparticles.threeD.actions.*;
import org.flintparticles.threeD.activities.MoveEmitter;
import org.flintparticles.threeD.emitters.Emitter3D;
import org.flintparticles.threeD.geom.Vector3D;
import org.flintparticles.threeD.initializers.*;
import org.flintparticles.threeD.zones.*;
public class Candle extends Emitter3D
{
public function Candle( position:Vector3D )
{
//counter = new Steady( 5 );
counter=new Blast(8);
addInitializer( new SharedImage( new Dot( 1 ) ) );
addInitializer( new ColorInit( 0xFFFFFF00, 0xFFFF6600 ) );
addInitializer( new Position( new PointZone( position ) ) );
addInitializer( new Velocity( new DiscZone( new Vector3D( 0, 120, 0 ), new Vector3D( 0, 1, 0 ), 30 ) ) );
addInitializer( new Lifetime( 5 ) );
addAction( new Move() );
addAction( new Accelerate( new Vector3D( 0, -50, 0 ) ) );
addAction( new Age() );
addAction(new ScaleImage(1,1));
}
}
}
进入到ScaleImage的构成
public function ScaleImage( startScale:Number = 1, endScale:Number = 1 )
第一个为startScal(开始缩放大小)e,第二个为endScale(结束缩放大小)。
分享到:
相关推荐
-flint粒子系统-飞翔的乌鸦flash 3d(http://www.uncle3d.com)
BornGrass-flint粒子系统-完美的草丛flash 3d(http://www.uncle3d.com)
Flint-前端入门套件v.1 该工具包使用进行一些强大CSS预处理。浏览器支持如何使用这个套件学分致谢Flint是的项目。
Jim Donahue是Adobe系统技术实验室主要科学家,主要研究方向是云计算、数据库和企业系统,此次峰会上Jim Donahue主要从架构,安装等方面详细介绍了Flint。
论文:当前工作文件: 在苏珊·艾森巴赫(Susan Eisenbach)和索菲娅·德罗索普洛(Sophia Drossopoulou)教授的指导下,弗林特(Flint)是项目和夏季工作的一部分。 它的最初开发者是Franklin Schrans,他的论文是...
flint_加密方法_C++语言库,其中包含了详细的编程以及编程思想,希望对大家有帮助。
使用手册
flint8.5 on linux特效合成系统.pdf
Flint:Apache Spark的时间序列库大规模分析时间序列数据的能力对于基于Spark的金融和物联网应用的成功至关重要。 Flint是Two Sigma在Spark中高度优化的时间序列操作的实现。 它利用时间序列数据的自然顺序来对时间...
flint为Freelancer风格的INI实现了一个解析器,并为Freelancer使用的每种二进制文件格式(BINI,资源DLL和UTF)实现了与平台无关的读取器实现。 所有这些实现都可以在找到。 此外,资源字符串处理将RDL(自由职业者...
Flint是一个框架,可使用Swift的功能根据功能和操作为Apple平台构建应用程序。 应用的功能是根据运行时限制启用的; 系统权限,操作系统版本或应用内购买。 它需要您的操作,并提供增强的日志记录,自动分析事件,...
flint particles一个flex的3d粒子系统类库,可以制作很多漂亮的粒子效果
该项目包括网络发送方 sdk 和接收方 sdk 发件人SDK 现在 Sender SDK 可用于 Firefox OS 2.2。 请下载并将其添加到您的 Firefox OS 应用程序中。 您可以参考了解更多信息。 接收器 SDK 只需将 JavaScript 库 URL ...
Flint 的后端已移至 。 客户端工具正在使用中,因此存储库将保留在此处,但是将不再维护此代码库。执照特此授予任何人免费获得本软件副本和相关文档文件(“软件”)的许可,不受限制地处理本软件,包括但不限于...
script src =" //openflint.github.io/flint-receiver-sdk/v1/receiver.js " > </ script >< script src =" //openflint.github.io/flint-receiver-sdk/v1/receiver_wrapper.js " > </ script &...
分析 git 日志以查找顶级提交者、代码流失(更改最多的文件)、提交和流失的分布。 为此运行的命令。 使用 git log --numstat > details.commit.log 为某个项目生成 thg git log 在 spark 中将文件注册为表格, ...
monkey测试入门基础操作: 1.准备 2.基本命令格式 基本语法 命令参数介绍:1) 参数: -p 2) 参数: -v 3)参数: -s 4) 参数: --throttle 毫秒> 5) 参数: --ignore-crashes 6) 参数: --ignore-...
强大的数论库
燧石Flint是Fortran的皮棉工具。 它尚不起作用,但是当前可以执行一些基本任务。 目前,它是作为Python模块编写的,但是我希望有一天它将使用命令行工具。 Flint目前尚无法完全使用,但它确实包含一些不错的功能,...
我们还提供了较旧的C ++实现( flint/cxx/*.cpp ),以提供历史记录和进行比较。 目前, flint的构建仅在Ubuntu上进行了测试。 积极的用户应该没有问题将其适应于其他系统。 随后将有更多官方支持的操作系统。依存...