本帖最后由 网雨霏霏 于 2016-4-29 08:43 编辑
平时观赏swf动画,常看到漂亮的粒子效果,羡慕不已,却不知道怎样运用。在网上找到一篇用flint做粒子制作的文字效果,想模仿更换其中的文字,但怎样都弄不来,哪位指导一二。原文: 制作烟花效果的祖国万岁特效动画焰火效果: [flash]http://flashroad.joinbbs.net/attachment.php?aid=MTM4fDIxNzY5MDZkfDE3NTMwOTc4Mjl8OWYyZDFFTSs3SzFDQ0p3bGoraWdzSlVSbHptQU5uRWpzWUtWNHZDZ1Z5K25ORU0%3D&request=yes&_f=.swf[/flash] 在做这个效果之前先介绍一下Flint:Flint是一个基于AS3.0的开源的粒子系统类库,让我们在不需要完全接触全部代码的情况下用自己的编码风格来轻松的扩展它,目前只有基于AS3.0的版本。 首先介绍一下基于Flint 创建焰火效果的原理,我们的效果将从屏幕的下方升到屏幕的上方,然后飘落在屏幕的下方。组成焰火的每一个小点,都是粒子系统中的一个粒子。准备素材:(1)准备1张背景图片(2)在ps中制作1张透明背景,白色字体的300*80像素文字图片,保存为png格式。 1、新建Flash文档,舞台为550*400像素,帧频30,背景颜色为黑色。然后把背景和文字图片导入到库中。右键单击文字图片,选择属性做链接,类名为logo,基类flash.display.BitmapData。2、制作一个探照灯效果的影片剪辑,大家都会就不说了。 3、把图层1改名为“探照灯”,打开库拖探照灯影片剪辑到舞台,放在合适的位置。 4、添加图层2改名为“探照灯”,拖入探照灯影片剪辑,修改一下方向,放在合适的位置。 5、添加图层3改名为“背景”,打开库拖入背景图片,右键单击图片转换为影片剪辑。在属性面板中把透明度调到70%到80%左右(视背景图片而定)。 6、添加图层4改名为as,单击第1帧,打开动作面板输入代码: //导入类 import org.flintparticles.common.actions.*; import org.flintparticles.common.counters.*; import org.flintparticles.common.energyEasing.Quadratic;import org.flintparticles.common.events.EmitterEvent; 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.*; //创建2D粒子发射器 var emitter:Emitter2D = new Emitter2D(); //计数器(每一秒中创建5000个粒子) emitter.counter = new Blast(5000); //初始化(粒子的初始位置,速度,图片和颜色) emitter.addInitializer( new ColorInit( 0xFFFF3300, 0xFFFFFF00)); emitter.addInitializer( new Lifetime(8)); emitter.addInitializer( new Position(new DiscZone(new Point(0,0),8))); var bitmapData:BitmapData = new Logo( 300, 80); emitter.addInitializer( new Velocity( new BitmapDataZone(bitmapData, -152, -380))); //向发射器中添加动作,让每一帧都更新粒子的位置emitter.addAction( new Age( Quadratic.easeIn ) ); emitter.addAction( new Fade( 1.0, 0 ) ); emitter.addAction( new Move() ); emitter.addAction( new LinearDrag( 0.5 ) ); emitter.addAction( new Accelerate( 0, 70 ) ); emitter.addEventListener( EmitterEvent.EMITTER_EMPTY, restart, false, 0, true );//定位粒子在舞台的上方 var rendererixelRenderer = new PixelRenderer( new Rectangle( 0, 0, 550, 400 ) ); renderer.addFilter( new BlurFilter( 2, 2, 1 ) ); renderer.addFilter( new ColorMatrixFilter( [ 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0.96,0 ] ) ); renderer.addEmitter( emitter ); addChild( renderer ); emitter.x = 250;emitter.y = 300; emitter.start(); function restart( ev:EmitterEvent ):void{ Emitter2D( ev.target ).start(); } 7、完成后保存在一个目录下,然后把附件中名为粒子库org的压缩文件解压到同一目录下(这个文件夹就是Flint粒子类库),现在就可以测试了。美工部分大家可以做一些光景、气球放飞等效果,加入场景中,我想大家一定比我做得好。各种参数可以试着改动一下数据,再看一下效果。
最近访问本帖者列表: | |||||||||||||||||||||||||||||||
相互学习,共同进步
|
|||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
相互学习,共同进步
|
|
相互学习,共同进步
|
|
本帖最后由 chxhflash 于 2016-4-29 14:54 编辑
回复 12# 网雨霏霏 多谢热心指导!总算成功了。 [flash]http://flashroad.joinbbs.net/attachment.php?aid=MTY1fGI0NzIwMWMwfDE3NTMwOTc4Mjl8OWYyZDFFTSs3SzFDQ0p3bGoraWdzSlVSbHptQU5uRWpzWUtWNHZDZ1Z5K25ORU0%3D&request=yes&_f=.swf[/flash] | |
相互学习,共同进步
|
|