[心得] 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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值