- audioManager
- Saturday, June 30th, 2007 at 4:35:38pm MDT
- // ActionScript file
- package
- {
- import flash.display.Shape;
- import flash.display.Sprite;
- import flash.media.Sound;
- import flash.media.SoundChannel;
- import flash.media.SoundMixer;
- import flash.media.SoundTransform;
- import flash.utils.*;
- import flash.net.URLRequest;
- import flash.text.TextField;
- import flash.text.TextFormat;
- import flash.events.*;
- import flash.geom.*;
- import flash.filters.*;
- import flash.errors.IOError;
- import mx.controls.Alert;
- import mx.controls.ComboBox;
- public class audioManager extends Sprite
- {
- private var _barArray: Array;
- private var _lineArray: Array;
- private var _sound: Sound;
- private var _songIndex: Number;
- private var _id3Index: Number;
- private var _sc: SoundChannel;
- private var _ba: ByteArray;
- private var _numBars: int;
- private var isplaying: int;
- private var _playtime: int;
- private var id3Array: Array;
- private var songArray: Array;
- public function audioManager()
- {
- // the song array contains your mp3 files. Change them to reflect the mp3 you wish to play
- // to add more mp3 files add another array indice eg., songArray[3] = "somesong.mp3";
- songArray = new Array();
- songArray[0] = "assets/Darude - Ecstacy.mp3";
- songArray[1] = "assets/Darude - SandStorm.mp3";
- _songIndex = 0;
- _barArray = new Array();
- _lineArray = new Array();
- _sc = new SoundChannel();
- _sound = new Sound();
- _sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
- _ba = new ByteArray();
- _playtime = 0;
- // change the number of bars
- _numBars = 60;
- createSpectrumBars();
- _sound.load(new URLRequest(songArray[_songIndex]));
- isplaying = 0;
- _id3Index = 0;
- _sc = _sound.play(_playtime, 25);
- var voltransform: SoundTransform = _sc.soundTransform;
- // set your volume for the mp3
- voltransform.volume = 0.6;
- _sc.soundTransform = voltransform;
- addEventListener(Event.ENTER_FRAME, animateBars);
- addEventListener(Event.ENTER_FRAME, getInfo);
- }
- private function createSpectrumBars(): void
- {
- for (var i: int = 0; i < _numBars; i++)
- {
- // this function allows you to change the the appearance of the bars
- var bar: Shape = new Shape();
- var dropShadow: DropShadowFilter = new DropShadowFilter(6, 25, 0x00FF00, 1, 10, 10, 2, 1);
- bar.graphics.beginFill(0xFF0099);
- bar.graphics.drawRect(250, - 75, 1, 30);
- bar.graphics.endFill();
- bar.filters = [dropShadow];
- bar.y = bar.height + 130;
- bar.x = 1+i * 4;
- addChild(bar);
- _barArray.push(bar);
- // this function allows you to change the the appearance of the blue dots
- var line1: Shape = new Shape();
- line1.graphics.beginFill(0x66FFFF);
- line1.graphics.drawRect(250, - 90, 1, 2);
- line1.graphics.endFill();
- line1.y = bar.height + 95;
- line1.x = 1+i * 4;
- addChild(line1);
- _lineArray.push(line1);
- }
- }
- private function ioErrorHandler(event: IOErrorEvent): void{
- }
- public function onStop():void
- {
- _playtime = 0;
- _sc.stop();
- isplaying = 1;
- }
- public function onPlay():void
- {
- if (isplaying == 0)
- {
- // do nothing
- }
- else
- {
- _sc = _sound.play(_playtime, 25);
- isplaying = 0;
- }
- }
- public function onPause():void
- {
- _playtime = _sc.position;
- _sc.stop();
- isplaying = 1;
- }
- private var textField: TextField = new TextField();
- private function getInfo(event: Event): void
- {
- // stores the MP3 ID3 info into an array, you can add more id3 info by adding another id3Array
- id3Array = new Array();
- id3Array[0] = "Song: " + _sound.id3.songName + " ";
- id3Array[1] = "Artist: " + _sound.id3.artist + " ";
- id3Array[2] = "Album: " + _sound.id3.album + " ";
- if (_sound.id3.songName != null)
- {
- // formats the display and appearance of the id3 array
- textField.width = 190;
- textField.height = 20;
- textField.x = 50;
- textField.y = 100;
- addChild(textField);
- textField.text = id3Array[_id3Index];
- var format: TextFormat = new TextFormat();
- format.font = "Cambria";
- format.color = 0x0099CC;
- format.size = 13;
- textField.setTextFormat(format)
- }
- id3Timer.addEventListener("timer", cycleid3Array);
- id3Timer.start();
- }
- private var id3Timer: Timer = new Timer(8000, 10);
- private function cycleid3Array(event: TimerEvent): void
- {
- if (_id3Index != 2) // set to higher number if you use more id3 information in the arrays.
- {
- _id3Index++
- }
- else if (_id3Index != 0)
- {
- _id3Index = 0;
- }
- }
- public function cyclesongArray(dir:String,cBox:ComboBox):void
- {
- if (dir == 'forw' && _songIndex != 1) // set to higher number if you use more mp3 files in the songArray.
- {
- _songIndex++;
- _sc.stop();
- _sound = new Sound();
- _sound.load(new URLRequest(songArray[_songIndex]));
- _sc = _sound.play(_playtime, 25);
- _sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
- var data:Number = _songIndex;
- data++
- cBox.selectedIndex = data
- }else if (dir == 'rev' && _songIndex != 0)
- {
- _songIndex--;
- _sc.stop();
- _sound = new Sound();
- _sound.load(new URLRequest(songArray[_songIndex]));
- _sc = _sound.play(_playtime, 25);
- _songIndex = 0;
- var data1:Number = _songIndex;
- data1++
- cBox.selectedIndex = data1
- }
- }
- public function setSong(data:Number):void
- {
- _songIndex = data;
- _sc.stop();
- _sound = new Sound();
- if(songArray[_songIndex] != "")
- {
- _sound.load(new URLRequest(songArray[_songIndex]));
- _sc = _sound.play(_playtime, 25);
- _sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
- //data++
- //Box.selectedIndex = data
- }else{
- mx.controls.Alert.show("Song doesn't exist!");
- }
- }
- private function animateBars(event: Event): void
- {
- SoundMixer.computeSpectrum(_ba, true, 0);
- for (var i: int = 0; i < _numBars; i++)
- {
- _barArray[i].scaleY = _ba.readFloat();
- _lineArray[i].scaleY = _ba.readFloat();
- }
- }
- }
- }
advertising
Update the Post
Either update this post and resubmit it with changes, or make a new post.
You may also comment on this post.
Please note that information posted here will expire by default in one month. If you do not want it to expire, please set the expiry time above. If it is set to expire, web search engines will not be allowed to index it prior to it expiring. Items that are not marked to expire will be indexable by search engines. Be careful with your passwords. All illegal activities will be reported and any information will be handed over to the authorities, so be good.