ActionScript 3 使用perlin噪声的AS3阈值转换效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActionScript 3 使用perlin噪声的AS3阈值转换效果相关的知识,希望对你有一定的参考价值。

package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	
	public class AS3Threshold extends MovieClip 
	{
		private var value:Number;
		private var _bmpData:BitmapData;
		private var _bmpDataPerlin:BitmapData;
		private var rect:Rectangle;
		private var pt:Point;
		
		public function AS3Threshold():void
		{

		}
		
		public function startEffect(_clip:MovieClip):Bitmap
		{
			// capture the _clip as a bitmap
			_bmpData = new BitmapData(_clip.width,_clip.height,true);
			_bmpData.draw(_clip);
			_bmpDataPerlin = new BitmapData(_clip.width,_clip.height,false);
			_bmpDataPerlin.perlinNoise(50,50,2,1,true,true,7,true);
			value = 1;
			addEventListener(Event.ENTER_FRAME, applyEffect);
			var _bmp:Bitmap = new Bitmap(_bmpData);
			rect = new Rectangle(0,0,_bmpDataPerlin.width,_bmpDataPerlin.height);
			pt = new Point(0,0);
			return _bmp;
		}
		
		public function applyEffect(e:Event):void
		{
			value -= .01;
			if (value < .01) {
				removeEventListener(Event.ENTER_FRAME,applyEffect);
			} else {

				//var threshold:uint =  0x7F000000; 
				var threshold:uint = 0xFFFFFF;
				var color:uint = 0x00FF00;
				var maskColor:uint = 0xffffff;
				_bmpData.threshold(_bmpDataPerlin, rect, pt, ">=",  (value *threshold), color, maskColor, false);
			}
		}
	}
}

// Usage Example
//
// import AS3Threshold;
// var as3Threshold:AS3Threshold = new AS3Threshold();
// myMovieClip.gotoAndStop(1);
// var bmp:Bitmap = as3Threshold.startEffect(myMovieClip);
// addChild(bmp);
// myMovieClip.gotoAndStop(2);

以上是关于ActionScript 3 使用perlin噪声的AS3阈值转换效果的主要内容,如果未能解决你的问题,请参考以下文章

Chapter 4 Perlin Noise

如何随着无限图的增长不断产生Perlin噪声?

最快的 Perlin-Like 3D 噪声算法?

需要分数布朗噪声(FBM)与柏林噪声澄清

Perlin Noise还有其他用途吗?

运动的柏林噪音?