(转) [Flash/Flex] 用柏林噪音和滤镜制作翻腾的火焰效果----Flash AS3效应
下图展示的是通过柏林噪声和一些滤镜制作的火焰效果。这个效果是从舞台底部燃起的熊熊烈火。这个效果使用了BitmapData里的perlinNoise方法,以及ColorMatrixFilter和DisplacementMapFilter两个滤镜,点击截图下面的链接,可以在新窗口中查看运行的效果。

http://www.flashandmath.com/flashcs5/fire/fire.html
http://files.cnblogs.com/wonderKK/fire.zip
点击上面的链接下载完整的源文件,源码中已做好注释,也可以在源码的基础上轻松的自定义效果。
效果是如何实现的
效果实现的基本思路是通过柏林噪声实现扭曲而不是柏林噪声显示。柏林噪声扭曲效果随着时间平滑的移动。在AS3Flash: Low CPU Clouds Animation - Perfect for Mobile effect这个效果中,我们同样使用了这个思想。在ScrollingPerlinNoise类中,我们创建了一个准确的柏林噪声扭曲效果,然后利用bitmap复制方法随着时间平滑的移动这个扭曲效果,这一点跟clouds效果里一样。
下面一步步介绍了火焰的制作过程,不过你也可以打开源文件,体验一下效果,这样目的会更加明确。在main.fla中的onEnter方法中,可以看到绘制和滤镜的每个步骤,这些也已做好注释。
下面是火焰效果创建的详细步骤:
· ScrollingPerlinNoise类的两个实例(我们叫做“clouds”)用来创建火焰。它们是随时间移动的灰度的柏林噪声。这两朵clouds会以不同的方向进行移动,来产生分散的移动的效果。实际上一朵clouds也是可以的,但是用两朵clouds实现的火焰效果会更好。
· 在火焰中绘制一个用渐变填充的半椭圆形,让它的顶部更加圆润,而且平滑的淡出。
· 现在给灰度的图片加上火的颜色。这一点我们通过BitmapData的palleteMap方法来实现,这和我们在中AS3WoodTexture Class - Apply Wood Texture to Any Display Object example实现木质纹理的方法是一样的。但是在这个效果中我用了一个比较聪明的方法,用ColorMatrixFilter滤镜将颜色转换成红黄白。ColorMatrixFilter在颜色通道值基础上,与它的multipliers和offsets属性进行计算得到最终的颜色值。深灰色转换成红色;灰色转换成黄色,因为红色和绿的混合;浅灰色转换成白色,因为颜色通道里的值都已经被加到最大值255了。
· 给clouds填充完颜色红,我为它添加了模糊效果,特别是在y方法模糊值更大,整页可以将颜色延伸到整个图片。
· 然后使用DisplacementMapFilter扭曲火焰,让效果更加逼真。DisplacementMapFilter应用于另外一个ScrollingPerlinNoise实例中。因为clouds的不断移动,扭曲效果会随时间不断变化。
· 最后,再加另外一个小小的模糊给火焰效果做一下润色。
绘制和滤镜的步骤看起来非常复杂,但是它只是诸多滤镜和柏林噪声试验效果之一,试着修改一下源文件,看看你能否发现其他更好的效果。
原文链接:http://www.flashandmath.com/flashcs5/fire/index.html
(转) [Flash/Flex] 用柏林噪音和滤镜制作翻腾的火焰效果----Flash AS3效应的更多相关文章
- RIAidea – Focus on Flash/Flex/AIR » About Me
RIAidea – Focus on Flash/Flex/AIR » About Me Browse > Home > About Me Tuesday, May 20, 2014 | ...
- PS使用滤镜制作光晕效果
滤镜制作光晕效果 新建图层,将背景色填充为黑色 滤镜->渲染->镜头光晕 调整好光晕大小 通过滤色(图层两字下面一点点的位置,有个下拉菜单,点开就在里面),去黑留白 如果觉得光线不够,可以 ...
- 用wix制作属于自己的Flash网站
Wix 制作属于自己的Flash网站 Wix 是一款新兴的在线应用程序,它可以帮助用户轻松的创建出绘声绘色的Flash网站,而不需要任何相关的专业知识.Wix 是一家位于以色列的Startup开发的一 ...
- [Flash&Flex] AS3.0 如何利用[Embed(source="...")]嵌入资源
在flex和flashIDE中我们可以[Embed(source="...")]嵌入图片和swf等资源,但两者之间的嵌入方式又有所区别. flex示例: [Embed(source ...
- Flash, Flex, Air, Flashplayer之间的相互关系是什么?
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:曾嵘链接:http://www.zhihu.com/question/20001256/answer/15565376来源:知 ...
- 【转】ActionScript,Flash,Flash/Flex Builder,FlashPlayer,AIR,swf,swc,swz之间的区别
原文链接:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的程序,最终可以编译成 ...
- Flash/Flex获取外部参数
Part One:Flex程序如何获取html容器传递的URL参数值 我们经常在Flex程序需要用从外部html向swf文件传递参数,(类似 test.html?name=jex&addres ...
- flash flex 程序出现错误 Error #2032
解决思路参考: http://www.cnblogs.com/enjoyprogram/archive/2012/06/21/2557615.html 有可能是这种情况: 状况:在安装flshbuil ...
- flash/flex 编译错误汇总
来源:http://blog.chinaunix.net/uid-366408-id-116463.html 代码 消息 说明 1000 对 %s 的引用不明确. 引用可能指向多项.例如,下面使用 ...
随机推荐
- SCU 4442 Party
二分图的最小点权覆盖. 非常感谢巨巨@islands_的解答,还帮我画了一个图. 题目保证给出的边构成的图是一个二分图. 如果没有第三种类型的$frog$,那么问题就很简单了.即选择哪些点,覆盖住所有 ...
- cdoj1092-韩爷的梦 (字符串hash)【hash】
http://acm.uestc.edu.cn/#/problem/show/1092 韩爷的梦 Time Limit: 200/100MS (Java/Others) Memory Limi ...
- Calendar日期方法
面试居然让我获取当前月份第一天跟最后一天,主要是尴尬的回答不上来. 废话不说,直接贴代码,工作应该是够用了 public class TestCalendar { // 日期也就是这了 public ...
- hdu 1069 动规 Monkey and Banana
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- [APIO2014]序列分割 --- 斜率优化DP
[APIO2014]序列分割 题目大意: 你正在玩一个关于长度为\(n\)的非负整数序列的游戏.这个游戏中你需要把序列分成\(k+1\)个非空的块.为了得到\(k+1\)块,你需要重复下面的操作\(k ...
- [APIO2007]动物园 --- 状压DP
[APIO2007]动物园 题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 如下图所示: 你是动物园的公共主管.你要做的是,让每 ...
- 【BFS】【枚举】HihoCoder - 1251 - The 2015 ACM-ICPC Asia Beijing Regional Contest - C - Today Is a Rainy Day
题意:给你两个只由1~6组成的串,问你B串至少要经过几次操作变成A串. 一次操作要么选择一个种类的数,将其全部变成另一种类:要么选择一个数,将其变为另一个数. 可以证明,一定先进行一定数量的第一种操作 ...
- NTFS ADS带来的web安全问题
有关ADS的简单说明请看http://www.xfocus.net/articles/200212/466.html 可以看到ADS在很久以前就被一些安全人员所关注,并且也提出了一些经典的利用,比如隐 ...
- Codeforces Beta Round #4 (Div. 2 Only) B. Before an Exam dp
B. Before an Exam 题目连接: http://www.codeforces.com/contest/4/problem/B Description Tomorrow Peter has ...
- mysql server has gone away的原因
之前遇到开发询问“mysql server has gone away”的问题,想当然的就认为是由于太长时间没有操作,导致超过MySQL服务端上的wait_timeout的设置,最终连接被MySQL服 ...