うねうねDisplacementMapFilterテスト
♥29 |
Line 90 |
Modified 2009-03-24 11:41:44 |
MIT License
archived:2017-03-04 18:24:29
ActionScript3 source code
/**
* Copyright nemu90kWw ( http://wonderfl.net/user/nemu90kWw )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/pY8M
*/
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns="*"
width="465" height="465">
<mx:VBox width="100%" height="100%">
<mx:Panel title="DisplacementMapFilter TEST" width="100%" height="165" paddingLeft="4" paddingRight="4">
<mx:HBox width="100%" height="100%">
<mx:VBox height="100%" paddingTop="16" verticalGap="4">
<mx:Label text="type"/>
<mx:Spacer height="4"/>
<mx:Label text="speed"/>
<mx:Label text="rate"/>
<mx:Label text="depth"/>
</mx:VBox>
<mx:VBox width="100%" height="100%" paddingTop="10" verticalGap="4">
<mx:ComboBox id="list_type" width="80" change="dmf.type=list_type.selectedItem.data;">
<mx:dataProvider>
<mx:Array>
<mx:Object label="横" data="h"/>
<mx:Object label="縦" data="v"/>
</mx:Array>
</mx:dataProvider>
</mx:ComboBox>
<mx:Spacer height="4"/>
<mx:HSlider id="hs_speed" value="2" minimum="0" maximum="20"
width="100%" change="dmf.speed=hs_speed.value;"/>
<mx:HSlider id="hs_rate" value="0.1" minimum="0" maximum="1"
width="100%" change="dmf.rate=hs_rate.value;"/>
<mx:HSlider id="hs_depth" value="50" minimum="0" maximum="500"
width="100%" change="dmf.depth=hs_depth.value;"/>
</mx:VBox>
</mx:HBox>
</mx:Panel>
<mx:Canvas width="100%" height="100%">
<DMFTest id="dmf" width="100%" height="100%" />
</mx:Canvas>
</mx:VBox>
<mx:Component className="DMFTest">
<mx:UIComponent creationComplete="init();">
<mx:Script>
<![CDATA[
private var filter:DisplacementMapFilter = new DisplacementMapFilter();
private var map:BitmapData;
public var type:String = "h";
public var offset:Number = 0;
public var speed:Number = 2;
public var rate:Number = 0.1;
public var depth:Number = 50;
private var source:BitmapData;
private var buffer:BitmapData;
public function init():void
{
map = new BitmapData(465, 300, false);
filter.mapBitmap = map;
filter.componentX = BitmapDataChannel.BLUE;
filter.componentY = BitmapDataChannel.BLUE;
var shape:Shape = new Shape();
shape.graphics.lineStyle(8, 0x000000);
shape.graphics.beginFill(0xE06000);
shape.graphics.drawCircle(465/2, 150, 100);
shape.graphics.endFill();
source = new BitmapData(465, 300, false, 0xF0FFC0);
source.draw(shape);
buffer = new BitmapData(465, 300, false);
addChild(new Bitmap(buffer));
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
for(var i:int = 0; i < map.height; i++) {
map.fillRect(new Rectangle(0, i, map.width, 1), Math.round(Math.sin((i+offset)*rate)*0x7F+0x80));
}
switch(type)
{
case "h":
filter.scaleX = depth;
filter.scaleY = 0;
break;
case "v":
filter.scaleX = 0;
filter.scaleY = depth;
break;
}
offset += speed;
buffer.applyFilter(source, source.rect, new Point(0, 0), filter);
}
]]>
</mx:Script>
</mx:UIComponent>
</mx:Component>
</mx:Application>