home *** CD-ROM | disk | FTP | other *** search
- snd = new Object();
- snd.channels = new Array();
- snd.loops = new Array();
- snd.global = new Sound();
- snd.global.setVolume(100);
- snd.active = 1;
- snd.actMc = 0;
- snd.idMc = 0;
- snd.mcs = new Array();
- snd.channelsAmount = 8;
- var i = 0;
- while(i < snd.channelsAmount)
- {
- snd.mcs[i] = _root.createEmptyMovieClip("sndMc" + this.idMc,this.idMc++);
- snd.channels[i] = new Sound(snd.mcs[i]);
- snd.channels[i].onSoundComplete = function()
- {
- var _loc1_ = this;
- _loc1_.playing = false;
- _loc1_.locked = false;
- _loc1_.fading = false;
- _loc1_.fadeTo = 0;
- _loc1_.fadeSpeed = 0;
- };
- snd.channels[i].playing = false;
- snd.channels[i].id = i;
- i++;
- }
- _root.createEmptyMovieClip("sndMcEvents",this.idMc++);
- _root.sndMcEvents.onEnterFrame = function()
- {
- with(_root.snd)
- {
- var i = 0;
- while(i < channelsAmount)
- {
- if(channels[i].fading)
- {
- var channel = channels[i];
- var newVol = channel.volume + channel.fadeSpeed * 100;
- newVol = channel.fadeSpeed <= 0 ? Math.max(channel.fadeTo,newVol) : Math.min(channel.fadeTo,newVol);
- channel.setVolume(channel.volume);
- if(newVol == channel.volume)
- {
- channel.fading = false;
- }
- channel.volume = newVol;
- if(newVol == 0 && channel.fadeOutFlag)
- {
- channel.fadeOutFlag = false;
- channel.stop();
- channel.locked = false;
- channel.playing = false;
- channel.fading = false;
- }
- }
- i++;
- }
- }
- };
- snd.playLoop = function(id, volume)
- {
- var _loc2_ = volume;
- var _loc3_ = id;
- if(_loc2_ eq "")
- {
- _loc2_ = 1;
- }
- var _loc1_ = this.getChannel();
- _loc1_.attachSound(_loc3_);
- _loc1_.start(0,99999);
- _loc1_.setVolume(Math.min(100,_loc2_ * 100));
- _loc1_.volume = _loc2_ * 100;
- _loc1_.locked = true;
- _loc1_.libId = _loc3_;
- _loc1_.playing = true;
- this.loops[_loc3_] = _loc1_;
- return _loc1_;
- };
- snd.fadeChannel = function(channel, to, time)
- {
- var _loc1_ = channel;
- var _loc2_ = to;
- if(_loc2_ == -1)
- {
- _loc1_.fadeOutFlag = true;
- _loc2_ = 0;
- }
- if(time == 0)
- {
- _loc1_.volume = _loc2_ * 100;
- _loc1_.setVolume(_loc1_.volume);
- _loc1_.fading = false;
- }
- else
- {
- _loc1_.fading = true;
- _loc1_.fadeTo = Math.min(100,_loc2_ * 100);
- _loc1_.fadeSpeed = (_loc2_ - _loc1_.volume) / time;
- }
- };
- snd.playEvent = function(id, volume)
- {
- var _loc2_ = volume;
- if(_loc2_ eq "")
- {
- _loc2_ = 1;
- }
- var _loc1_ = this.getChannel();
- _loc1_.attachSound(id);
- _loc1_.start(0,0);
- _loc1_.setVolume(Math.min(100,_loc2_ * 100));
- _loc1_.volume = _loc2_ * 100;
- _loc1_.libId = id;
- _loc1_.playing = true;
- return _loc1_;
- };
- snd.getChannel = function()
- {
- var _loc3_ = this;
- var oldestPos = -1;
- var oldestId = -1;
- var _loc2_ = 0;
- while(_loc2_ < _loc3_.channels.length)
- {
- var _loc1_ = _loc3_.channels[_loc2_];
- if(!_loc1_.locked)
- {
- if(!_loc1_.playing)
- {
- return _loc3_.channels[_loc2_];
- }
- if(_loc1_.position > oldestPos)
- {
- oldestPos = _loc1_.position;
- oldestId = _loc1_.id;
- }
- }
- _loc2_ = _loc2_ + 1;
- }
- if(oldestId != -1)
- {
- trace("return old: " + oldestId);
- return _loc3_.channels[oldestId];
- }
- trace("##ERROR: SOUND : no free channel..");
- };
- snd.stop = function(id)
- {
- var _loc2_ = this;
- var _loc3_ = id;
- if(_loc3_ eq "")
- {
- return _loc2_.stopAll();
- }
- var _loc1_ = 0;
- while(_loc1_ < _loc2_.channels.length)
- {
- if(_loc2_.channels[_loc1_].libId == _loc3_)
- {
- _loc2_.channels[_loc1_].stop();
- _loc2_.channels[_loc1_].locked = false;
- _loc2_.channels[_loc1_].playing = false;
- _loc2_.channels[_loc1_].locked = false;
- }
- _loc1_ = _loc1_ + 1;
- }
- };
- snd.stopAll = function()
- {
- var _loc1_ = this;
- for(var _loc2_ in _loc1_.channels)
- {
- _loc1_.channels[_loc2_].stop();
- _loc1_.channels[_loc2_].locked = false;
- _loc1_.channels[_loc2_].fading = false;
- _loc1_.channels[_loc2_].playing = false;
- }
- };
-