[心得] Bit地图Data PerlinNoise 效果调试
[心得] BitmapData PerlinNoise 效果调试
今天看看了BitmapData的perlinNoise参数比较多,为了更好的理解各个参数的意义所以就写了个简单调试的例子,
以下是源码,有兴趣的可以看下。
今天看看了BitmapData的perlinNoise参数比较多,为了更好的理解各个参数的意义所以就写了个简单调试的例子,
以下是源码,有兴趣的可以看下。
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="740" height="450" creationComplete="callLater(init)"> <fx:Script> <![CDATA[ private var bitmapData:BitmapData; private var bitmap:Bitmap; private function init():void{ bitmapData = new BitmapData(400,448); bitmap = new Bitmap(bitmapData); content.addChild(bitmap); changeBitmap(); } public function changeBitmap():void{ var channelOptions:uint=0; if(red.selected){ channelOptions = BitmapDataChannel.RED; } if(blue.selected){ if(channelOptions != 0) channelOptions = channelOptions | BitmapDataChannel.BLUE; else channelOptions = BitmapDataChannel.BLUE; } if(green.selected){ if(channelOptions != 0) channelOptions = channelOptions | BitmapDataChannel.GREEN; else channelOptions = BitmapDataChannel.GREEN; } if(alphas.selected){ if(channelOptions != 0) channelOptions = channelOptions | BitmapDataChannel.ALPHA; else channelOptions = BitmapDataChannel.ALPHA; } var offset:Array; if(useOffset.selected && textArea.text !=''){ offset = []; var arr:Array = textArea.text.split("|"); for(var i:int=0;i<arr.length;i++){ if(arr[i]!=''){ var s:Array = arr[i].split(','); var point:Point=new Point(); point.x=s[0]; point.y=s.length==2?s[1]:0; offset.push(point); } } } bitmapData.perlinNoise(400,448,numOctaves.value,randomSeed.value,stitch.selected,fractalNoise.selected,channelOptions,grayScale.selected,offset); } ]]> </fx:Script> <s:HGroup width="740" height="450"> <mx:UIComponent id="content" width="400" height="448"/> <s:Form width="334" height="448" backgroundColor="0xcccccc"> <s:FormItem label="numOctaves"> <s:HSlider id="numOctaves" value="6" change="changeBitmap()" maximum="20" minimum="0"/> </s:FormItem> <s:FormItem label="randomSeed"> <s:HSlider id="randomSeed" value="10" change="changeBitmap()" maximum="100" minimum="0"/> </s:FormItem> <s:FormItem label="stitch"> <s:CheckBox id="stitch" selected="true" click="changeBitmap()"/> </s:FormItem> <s:FormItem label="fractalNoise"> <s:CheckBox id="fractalNoise" selected="true" click="changeBitmap()"/> </s:FormItem> <s:FormItem label="channelOptions"> <s:CheckBox id="red" label="red" selected="true" click="changeBitmap()"/> <s:CheckBox id="green" label="green" selected="true" click="changeBitmap()"/> <s:CheckBox id="blue" label="blue" click="changeBitmap()"/> <s:CheckBox id="alphas" label="alpha" click="changeBitmap()"/> </s:FormItem> <s:FormItem label="grayScale"> <s:CheckBox id="grayScale" click="changeBitmap()"/> </s:FormItem> <s:FormItem label="userOffset"> <s:CheckBox id="useOffset" selected="true" click="changeBitmap()"/> <s:TextArea id="textArea" text="0,10|0,20" restrict="0-9|," change="changeBitmap()" height="50" enabled="{useOffset.selected}"/> </s:FormItem> </s:Form> </s:HGroup> </s:Application>