package { import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.media.SoundMixer; import flash.media.SoundTransform; import flash.net.URLRequest; import flash.utils.ByteArray; /** * ... * @author nagai * sound by AlainMikuni * */ [SWF(width="465",height="465",frameRate=60)] public class Main extends Sprite { private const ROW:int = 16; private const COL:int = 16; private const RADIUS:int = 5; private var sound:Sound; private var obj_array_l:Array = []; private var obj_array_r:Array = []; private var position_array_l:Array = []; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event=null):void { removeEventListener(Event.ADDED_TO_STAGE, init); PlaySound("http://www.takasumi-nagai.com/soundfiles/sound004.mp3"); } private function PlaySound(url:String):void { sound = new Sound(); var _context:SoundLoaderContext = new SoundLoaderContext(1000, true); sound.addEventListener(Event.COMPLETE, SoundLoadeComplete); sound.load(new URLRequest(url), _context); } private function SoundLoadeComplete(e:Event):void { Wonderfl.capture_delay(46); obj_array_l = Draw(); obj_array_r = Draw(); position_array_l = PointPosition(obj_array_l); addEventListener(Event.ENTER_FRAME, loop); sound.play(0, 10, new SoundTransform(0.7, 0)); } private function loop(e:Event):void { var _byte:ByteArray = new ByteArray(); SoundMixer.computeSpectrum(_byte, true); for (var n:int = 0; n < 2; n++) { for (var i:int = 0; i < 256; i++) { var data:Number = _byte.readFloat(); var p:Number = data * 2; if (n==0) { var _sp:Sprite = obj_array_l[i] as Sprite; var _point:Point = position_array_l[i] as Point; _sp.x += p; _sp.y += p; if (data == 0) { _sp.x += (_point.x - _sp.x) / 10; _sp.y += (_point.y - _sp.y) / 10; } } else if (n==1) { var _sp_r:Sprite = obj_array_r[i] as Sprite; _sp_r.scaleX += p; _sp_r.scaleY += p; if (data <0.2) { _sp_r.scaleX += (1 - _sp_r.scaleX) / 10; _sp_r.scaleY += (1 - _sp_r.scaleY) / 10; } } } } } private function PointPosition(array:Array):Array { var _array:Array = []; for (var i:int = 0; i < array.length; i++) { var _obj:Object = array[i] as Object; var _point:Point = new Point(_obj.x, _obj.y); _array.push(_point); } return _array; } private function Draw():Array { var _array:Array = []; for (var i:int = 0; i < ROW ; i++) { for(var j:int = 0; j < COL; j++) { var _sp:Sprite = new Sprite(); _sp.graphics.beginFill(0); _sp.graphics.drawCircle(0, 0, RADIUS); _sp.graphics.endFill(); _sp.x = 15 + j * 450 / COL; _sp.y = 15 + i * 450 / ROW; _sp.blendMode = "invert"; addChild(_sp); _array.push(_sp); } } return _array; } } } soundtest11