我对粒子这方面的知识一无所知,但是看到各种炫的效果后彻底被征服了,粒子这玩意对我这数学盲来说太难搞了,最近学starling得知有个扩展的粒子系统,偶然逛论坛发现一强大的粒子编辑器,不敢独吞,拿出来大家玩玩,超爽。
粒子编辑器网址:http://onebyonedesign.com/flash/particleeditor/
说明:
Emiiter type 可选两种粒子运动方式:Gravity和Radial
Edit Texture 可以选择粒子的基本图形,除了系统提供的星形圆形外,还可以上传自己的图形。
Export Particle 导出粒子文件(我最喜欢这个功能了)
其余的滑竿就是控制数值变化操作了,这个我就不解释了,大家去随便拖几个看看,每改变数值都会使粒子运动产生变化,老实说,我也看不懂那些变化是啥意思,所以还不能做到随心所欲的控制粒子发生,这个还望大神们指点。
下面是本菜使用生成的粒子使用示例:
截个效果图先:
很漂亮啊!
在网站里按Export Particle 导出粒子文件后,你会拥有一个压缩包,解压,会看到两个文件,一个png,一个pex
首先我们要在项目根目录里建一个Assets文件夹(如果有了就不用建了),把那两个文件放在这里面。
代码:
starling启动类:(做过starling的都知道,没做过的话.....我也解释不了)
1 package particle {
2 import starling.core.Starling;
3 import flash.display.Sprite;
4
5 /**
6 * @author portal
7 */
8 [SWF(backgroundColor="#000000", frameRate="60", width="640", height="480")]
9 public class ParticleTest extends Sprite {
10
11 private var mStarling:Starling;
12
13 public function ParticleTest() {
14 mStarling = new Starling(ParticleDemo, stage);
15 mStarling.start();
16 //addChild(new Stats());
17 }
18 }
19 }
主类:(代码很少,例子很简单)
1 package particle {
2 import starling.core.Starling;
3 import starling.events.Event;
4 import starling.textures.Texture;
5 import starling.extensions.PDParticleSystem;
6 import starling.display.Sprite;
7
8 /**
9 * @author portal
10 */
11 public class ParticleDemo extends Sprite {
12
13 [Embed(source="../assets/texture.png")]
14 private static const myParticle : Class;
15
16 [Embed(source="../assets/particle.pex",mimeType="application/octet-stream")]
17 private static const myParticleXML : Class;
18
19 private var pdSystem:PDParticleSystem;
20
21 public function ParticleDemo() {
22 var xml:XML = XML(new myParticleXML);
23 var texture:Texture = Texture.fromBitmap(new myParticle());
24 pdSystem = new PDParticleSystem(xml, texture);
25 addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
26 }
27
28 private function onAddedToStage(event:Event):void
29 {
30 pdSystem.emitterX = 100; //调位置而已
31 pdSystem.emitterY = 200;
32 addChild(pdSystem); //记得要加入显示列表
33 pdSystem.start(); //开始播放
34 Starling.juggler.add(pdSystem); //粒子是动画对象,starling是用juggler对象管理动画的
35 }
36 }
37 }