Flash中BitmapData类提供了perlinNoise()方法,用来实现perlin杂点,可以用来模拟一些水雾火云等自然效果或各种伪随机效果...
此例子就简单的说明下,使用及效果
包结构: org.wave
package org.wave
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.events.Event;
import flash.geom.Point;
import org.view.View;
public class WaveDemo extends View
{
private var bmp:Bitmap;
private var bmpData:BitmapData;
private var arr:Array;
private var channels:uint;
public function WaveDemo()
{
bmpData = new BitmapData(400,300);
bmp = new Bitmap(bmpData);
arr = [new Point()];
}
override protected function init(e:Event) : void{
addChild(bmp);
channels = BitmapDataChannel.ALPHA | BitmapDataChannel.BLUE;
addEventListener(Event.ENTER_FRAME,enterFrame);
}
private function enterFrame(e:Event):void{
arr[0].x += 10;
arr[0].y += 10;
bmpData.perlinNoise(400,300,4,2,false,false,channels,false,arr);
}
}
}
用到的 View类,
package org.view
{
import flash.display.Sprite;
import flash.events.Event;
public class View extends Sprite
{
public function View()
{
addEventListener(Event.ADDED_TO_STAGE,init);
}
protected function init(e:Event):void{
removeEventListener(Event.ADDED_TO_STAGE,init);
addEventListener(Event.REMOVED_FROM_STAGE,deInit);
}
protected function deInit(e:Event):void{
removeEventListener(Event.REMOVED_FROM_STAGE,deInit);
}
}
}