wav.samples.length) { //add silent samples at the end Alert.show("adding samples"); for(var i:int = 0; i < numSamples - wav.samples.length; i++) { wav.samples.push(new Sample()); } } } buffer = new AudioBuffer( 4, Audio.STEREO, Audio.BIT16, Audio.RATE44100 ); buffer.onInit = onAudioBufferInit; buffer.onComplete = onAudioBufferComplete; } private function onAudioBufferComplete(buffer: AudioBuffer): void { var samples: Array = buffer.getSamples(); for(var i:int; i < samples.length; i++) { samples[i].left = wav.samples[c].left; samples[i].right = wav.samples[c].right; c++; if(c == wav.samples.length) { if(type == TYPE_NOLOOP) { stop(); break; } c = 0; } } buffer.update(); } public function stop():void { //soundChannel.stop(); buffer.stop(); state = STATE_IDLE; img.alpha = 0.5; } public function setVolume(vol:Number):void { /* if(vol < 0 || vol > 1) return; trans.volume = vol; soundChannel.soundTransform = trans; */ } private function setImage():void { var src:String = "student-mma-16-img-final-"; switch(color) { case RED: src += "loop-red.png"; break; case BLUE: src += "loop-blue.png"; break; case YELLOW: src += "loop-yellow.png";break; default: src += "loop-green.png"; } img = new Image(); img.source = src; img.width = 64; img.height = 78; img.alpha = 0.5; this.addChild(img); } private function setLabel():void { var label:Label = new Label(); label.text = title; label.x = 10; label.y = 24; label.styleName = "loopLabel"; label.truncateToFit = false; label.width = 46; label.setStyle("color", getColor(color)); this.addChild(label); } private function createSound(url:String):void { var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadComplete ); loader.addEventListener(IOErrorEvent.IO_ERROR, loadError ); loader.addEventListener(ProgressEvent.PROGRESS, updateProgress); createProgressBar(); loader.load( new URLRequest(url)); trans = new SoundTransform(); } public static function getColor(color:int):uint { switch(color) { case RED: return 0x7d0000; case BLUE: return 0x00527d; case YELLOW: return 0x7c7d00; default: return 0x007d11; } } private function createProgressBar():void { progressBar = new Shape(); this.rawChildren.addChild(progressBar); } private function updateProgress(e:ProgressEvent):void { var width:int = (e.bytesLoaded / e.bytesTotal) * 62; progressBar.graphics.clear(); progressBar.graphics.beginFill(0xFFFFFF); progressBar.graphics.drawRect(1, 65, width, 12); } private function loadError(e:IOErrorEvent):void { state = STATE_ERROR; } ]]>