下面我们看看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粒子系统是由Uncle3D团队开发的一款高效、灵活的2D和3D粒子编辑器,支持ActionScript 3.0,广泛应用于Flash平台。其核心特点包括实时预览、丰富的粒子效果库、自定义粒子形状、粒子间的交互以及多层粒子系统,...
总的来说,"BornGrass-flint粒子系统"是Flash 3D环境中实现草丛效果的优秀工具,它以其强大的性能、高度的定制性和丰富的视觉效果,为数字内容创作带来了新的可能。无论你是游戏开发者、动画师还是视觉艺术家,掌握...
- **ABI(应用程序二进制接口)**:FLINT针对不同的ABI进行了优化,以确保在各种平台上都能获得良好的兼容性和性能。 - **架构支持**:FLINT支持多种处理器架构,包括x86、ARM等,这使得它能够在广泛的硬件平台上运行...
1. **灵活性**:Flint提供了高度可定制的粒子生成器和控制器,允许开发者调整粒子的生命周期、行为和外观,以适应不同的应用场景。 2. **3D支持**:不同于许多仅限于2D的粒子系统,Flint支持3D环境,可以创建出具有...
**Flint前端入门套件** 是一款专为初学者设计的工具包,旨在简化前端开发的初始阶段。它特别强调了CSS预处理的功能,帮助开发者更高效地编写样式代码。预处理器如Sass、Less或Stylus允许开发者使用变量、嵌套规则、...
在某个峰会上,他深入探讨了Flint的相关知识,特别是其架构和安装流程。Flint项目的目标是将大数据分析服务(Big Data Analytics Service,简称BDAS)带入亚马逊网络服务(Amazon Web Services,简称AWS)的大众市场...
"flint_加密方法_C++语言库"显然是一个专门针对C++编程环境设计的加密工具包,旨在帮助开发者实现安全的数据保护功能。 标题中的“flint”可能是指该库的项目名,它可能来源于英文单词“flint”,意为燧石,象征着...
因此,FLINT建议提升发射高度和发射角度来实现更远的射程。FLINT模拟的许多导弹会根据现实世界的规格,在发射后立即向上升起,进入弹道轨迹,从而实现更高的飞行高度和更远的航程。例如,AIM-120C导弹和AGM-114地狱...
3. **预设组件**:`flint-babylon`可能包含了预设的3D对象和组件,如相机、粒子系统、UI元素等,方便开发者快速搭建3D场景。 4. **性能优化**:通过针对前端应用场景的优化,`flint-babylon`可能提高了Babylon.js在...
论文:当前工作文件: 在苏珊·艾森巴赫(Susan Eisenbach)和索菲娅·德罗索普洛(Sophia Drossopoulou)教授的指导下,弗林特(Flint)是项目和夏季工作的一部分。 它的最初开发者是Franklin Schrans,他的论文是...
flint8.5 on linux特效合成系统.pdf
flint为Freelancer风格的INI实现了一个解析器,并为Freelancer使用的每种二进制文件格式(BINI,资源DLL和UTF)实现了与平台无关的读取器实现。 所有这些实现都可以在找到。 此外,资源字符串处理将RDL(自由职业者...
Flint是一个框架,可使用Swift的功能根据功能和操作为Apple平台构建应用程序。 应用的功能是根据运行时限制启用的; 系统权限,操作系统版本或应用内购买。 它需要您的操作,并提供增强的日志记录,自动分析事件,...
它可能包含API接口、示例代码、文档和必要的配置选项,使得开发者可以快速将消息发送功能集成到Web应用中。 在`flint-web-sender-sdk` 被弃用后,开发者需要寻找替代方案。这可能包括寻找其他成熟的即时通讯SDK,...
"基于Flint的师生互动实证研究论文" 本文是基于Flint的师生互动实证研究论文,主要探讨基于Flint的师生互动实证研究。Flint是 Foreign Language Interaction System 的缩写,是一种互动分析系统,用于分析课堂师生...
该项目包括网络发送方 sdk 和接收方 sdk 发件人SDK 现在 Sender SDK 可用于 Firefox OS 2.2。 请下载并将其添加到您的 Firefox OS 应用程序中。 您可以参考了解更多信息。 接收器 SDK 只需将 JavaScript 库 URL ...
强大的数论库
5. **易用性与社区支持**:Flint-release可能包含了详细的文档、示例代码和教程,帮助开发者快速上手。一个活跃的社区也是衡量库质量的重要标准,开发者可以通过论坛、邮件列表或GitHub上的问题追踪系统获取帮助和...
flint视觉效果系统是专为电影、电视和其他多媒体内容制作设计的工具,可能包含高级的图像处理、合成、粒子系统、动态模拟等功能,旨在帮助艺术家们创造逼真的特效和动画。这类系统通常需要强大的计算能力和高效的...