forked from: flash on 2010-3-25

by aass forked from flash on 2010-3-25 (diff: 42)
♥0 | Line 48 | Modified 2010-03-25 16:45:15 | MIT License
play

ActionScript3 source code

/**
 * Copyright aass ( http://wonderfl.net/user/aass )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/pebv
 */

package {
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.events.Event;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.media.SoundTransform;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.system.Security;
    
    public class FlashTest extends Sprite {
    		private var _channel:SoundChannel;
    		private var _byteArray:ByteArray = new ByteArray;
    		private const CHANNEL_LENGTH:int = 256;
    		private var _barArray:Array = [];
        public function FlashTest() {
            // write as3 code here..
            Security.loadPolicyFile("http://www.muraken.biz/crossdomain.xml");
            var _bar:Shape;
            var _offsetX:int = Math.floor((stage.stageWidth - CHANNEL_LENGTH) / 2);
            for(var i:int = 0; i < CHANNEL_LENGTH; i++) {
            		_bar = new Shape;
            		_bar.graphics.beginFill(0);
            		_bar.graphics.drawRect(0,-1,1,1);
            		_bar.graphics.endFill();
            		addChild(_bar);
            		_bar.y = stage.stageHeight;
            		_bar.x = i + _offsetX;
            		_barArray[i] = _bar;	
            }
            var _url:String = "http://www.muraken.biz/wonderfl/test.mp3";
            var _req:URLRequest = new URLRequest(_url);
            var _snd:Sound = new Sound;
            _snd.load(_req);
            _channel = _snd.play(0, int.MAX_VALUE);
            addEventListener(Event.ENTER_FRAME, _update);
        }
        private function _update(e:Event):void {
        		SoundMixer.computeSpectrum(_byteArray, true);
        		var i:int;
        		var l:Number, r:Number, lr:Number;
        		var _bar:Shape;
        		for(i = 0; i < CHANNEL_LENGTH; i++){
        			_byteArray.position = i*4+1024;
        		}
        }
    }
}