import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.geom.Point; import flash.geom.Rectangle; var bmd1: BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var seed: int = int(Math.random() * int.MAX_VALUE); var channels: uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null); var bitmap1: Bitmap = new Bitmap(bmd1); addChild(bitmap1); var bmd2: BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var pt: Point = new Point(0, 0); var rect: Rectangle = new Rectangle(0, 0, 200, 200); var threshold: uint = 0x00800000; //50%的红色通道值 var color: uint = 0x80FF0000; //替换后的颜色 var maskColor: uint = 0x00FF0000; //因为只查找红色通道,所以遮罩仅为纯红色通道 bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true); var bitmap2: Bitmap = new Bitmap(bmd2); bitmap2.x = bitmap1.x + bitmap1.width + 10; addChild(bitmap2); addEventListener(Event.ENTER_FRAME, EnterFrameHandler); function EnterFrameHandler(e: Event): void { seed = int(Math.random() * int.MAX_VALUE); bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null); bitmap1.bitmapData = bmd1; bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true); bitmap2.bitmapData = bmd2; }