In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

flash on 2011-9-12

Get Adobe Flash player
by Hyrofumi 12 Sep 2011
    Embed
/**
 * 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];
		}
    }
}