8.10.创建噪波图案

问题
我要创建随机噪波图案
解决办法
使用BitmapData类的noise( )方法
讨论
噪波图案是一些随机的象素值组成的图案,虽然这也能通过循环调用setPixel( )方法做到,但是noise( )方法更简单些且功能强大。

noise( )创建随机杂乱的图案,它就像我们的电视当没有信号时出现的图案那样,但是如果把噪波和其他滤镜组合使用会得到很有意思的效果。

直接通过BitmapData调用noise( )方法,参数有:
bitmap.noise(seed, low, high, channel, grayscale);
seed参数决定随机样式,它可以是任意值。如果用同样的seed调用两次方法,得到的图案将是一样的,因此要的到不同的图案必须使用不同的seed,可以用随机数产生它:
+展开
-ActionScript
Math.random( ) * 100000

low和high 参数决定每个象素的最大值和最小值,范围在0到255,设置越高图案约亮,越低越暗。
channel参数指定把噪波应用到哪个通道上,其值可以是1,2,4,8,或者用BitmapDataChannel类的RED, GREEN, BLUE, 和ALPHA。
grayscale 是一个布尔值,true表示随机值应用到三个通道上。

看下面的例子,首先创建位图,添加噪波并显示:
+展开
-ActionScript
bitmap = new BitmapData(stage.stageWidth, stage.stageHeight,
false, 0xff000000);
bitmap.noise(1000, 0, 255, BitmapDataChannel.RED, false);
var image:Bitmap = new Bitmap(_bitmap);
addChild(image);

这样在红色通道创建了随机的图案,提高最低值可产生更亮的图案:
+展开
-ActionScript
bitmap.noise(1000, 200, 255, BitmapDataChannel.RED, false);

设置最后的参数为true,可转换为灰度图:
+展开
-ActionScript
bitmap.noise(1000, 200, 255, BitmapDataChannel.RED, true);

如果设置grayscale参数为true,不管你指定什么通道,都只能创建灰度颜色的噪点:
+展开
-ActionScript
bitmap.noise(1000, 0, 255, BitmapDataChannel.RED |
BitmapDataChannel.GREEN |
BitmapDataChannel.BLUE,
false);

最后,我们试验下噪波和其他滤镜一起使用的效果如何。下面的代码创建了噪波,然后应用一个水平的模糊滤镜:
+展开
-ActionScript
bitmap = new BitmapData(stage.stageWidth, stage.stageHeight,
false, 0xff000000);
bitmap.noise(1000, 128, 255, BitmapDataChannel.RED, true);
bitmap.applyFilter(bitmap,
bitmap.rect,
new Point( ),
new BlurFilter(30, 1, 3));
var image:Bitmap = new Bitmap(bitmap);
addChild(image);

加支付宝好友偷能量挖...


评论(0)网络
阅读(90)喜欢(0)flash/flex/fcs/AIR