flash on 2011-9-12
/**
* Copyright Hyrofumi ( http://wonderfl.net/user/Hyrofumi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/GJ12
*/
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.ActivityEvent;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.SampleDataEvent;
import flash.events.StatusEvent;
import flash.filters.DisplacementMapFilter;
import flash.filters.DisplacementMapFilterMode;
import flash.geom.Point;
import flash.media.Microphone;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.system.Security;
import flash.system.SecurityPanel;
public class YuraYura extends Sprite {
private var _mapFilter:DisplacementMapFilter;
private var _noise:BitmapData;
private var _loader:Loader;
private var _url:String = "http://assets.wonderfl.net/images/related_images/2/24/24a5/24a5e22d3435c2ca97aff0e9eff515388e5807fb";
private var dist:int = 3;
private var oct:int = 1;
private var _mic:Microphone;
private var offsetArray:Array = new Array();
private var speedArray:Array = new Array();
public function YuraYura():void {
Security.allowDomain("*");
_mic = Microphone.getMicrophone();
if (_mic != null) {
_mic.setUseEchoSuppression(true);
_mic.addEventListener(SampleDataEvent.SAMPLE_DATA, _micSampleDataHandler);
}
_loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageComplete);
_loader.load(new URLRequest(_url), loaderContext);
this.addEventListener(MouseEvent.CLICK, function():void
{
dist += 1;
initOffsetArray();
});
}
/**
* マイク入力の取得
*/
private function _micSampleDataHandler(e:SampleDataEvent):void
{
//dist += 1;
dist = Math.max(e.data.readFloat() * 100, 3);
initOffsetArray();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
/*private function activityHandler(event:ActivityEvent):void {
trace("activityHandler: " + event);
}
private function statusHandler(event:StatusEvent):void {
trace("statusHandler: " + event);
}*/
private function imageComplete(e:Event):void {
addChild(_loader);
initNoise();
}
private function initOffsetArray():void{
offsetArray = [];
speedArray = [];
for(var i:int = 0; i < oct; i++){
offsetArray[i] = new Point(0, 0);
speedArray[i] = new Array(2);
speedArray[i][0] = Math.random() * dist;
speedArray[i][1] = Math.random() * dist;
}
}
private function initNoise():void
{
_noise = new BitmapData(194, 259);
initOffsetArray();
}
private function onEnterFrame(e:Event):void
{
for(var i:int = 0; i < oct; i++){
offsetArray[i].x += speedArray[i][0];
offsetArray[i].y += speedArray[i][1];
}
_noise.perlinNoise(150, 150, oct, 1, false, false, 1, false, offsetArray);
var _bitmap:Bitmap = new Bitmap(_noise);
_bitmap.x = _loader.width;
addChild(_bitmap);
_mapFilter = new DisplacementMapFilter(_noise, new Point(0, 0), 1, 1, 50, 50, DisplacementMapFilterMode.CLAMP);
_loader.content.filters = [_mapFilter];
}
}
}