home *** CD-ROM | disk | FTP | other *** search
/ One Click 21 (Special) / OC021.iso / Juegos / miniscrapercaper / miniscrapercaper.swf / scripts / frame_3 / DoAction_5.as < prev    next >
Encoding:
Text File  |  2006-02-02  |  4.4 KB  |  180 lines

  1. snd = new Object();
  2. snd.channels = new Array();
  3. snd.loops = new Array();
  4. snd.global = new Sound();
  5. snd.global.setVolume(100);
  6. snd.active = 1;
  7. snd.actMc = 0;
  8. snd.idMc = 0;
  9. snd.mcs = new Array();
  10. snd.channelsAmount = 8;
  11. var i = 0;
  12. while(i < snd.channelsAmount)
  13. {
  14.    snd.mcs[i] = _root.createEmptyMovieClip("sndMc" + this.idMc,this.idMc++);
  15.    snd.channels[i] = new Sound(snd.mcs[i]);
  16.    snd.channels[i].onSoundComplete = function()
  17.    {
  18.       var _loc1_ = this;
  19.       _loc1_.playing = false;
  20.       _loc1_.locked = false;
  21.       _loc1_.fading = false;
  22.       _loc1_.fadeTo = 0;
  23.       _loc1_.fadeSpeed = 0;
  24.    };
  25.    snd.channels[i].playing = false;
  26.    snd.channels[i].id = i;
  27.    i++;
  28. }
  29. _root.createEmptyMovieClip("sndMcEvents",this.idMc++);
  30. _root.sndMcEvents.onEnterFrame = function()
  31. {
  32.    with(_root.snd)
  33.    {
  34.       var i = 0;
  35.       while(i < channelsAmount)
  36.       {
  37.          if(channels[i].fading)
  38.          {
  39.             var channel = channels[i];
  40.             var newVol = channel.volume + channel.fadeSpeed * 100;
  41.             newVol = channel.fadeSpeed <= 0 ? Math.max(channel.fadeTo,newVol) : Math.min(channel.fadeTo,newVol);
  42.             channel.setVolume(channel.volume);
  43.             if(newVol == channel.volume)
  44.             {
  45.                channel.fading = false;
  46.             }
  47.             channel.volume = newVol;
  48.             if(newVol == 0 && channel.fadeOutFlag)
  49.             {
  50.                channel.fadeOutFlag = false;
  51.                channel.stop();
  52.                channel.locked = false;
  53.                channel.playing = false;
  54.                channel.fading = false;
  55.             }
  56.          }
  57.          i++;
  58.       }
  59.    }
  60. };
  61. snd.playLoop = function(id, volume)
  62. {
  63.    var _loc2_ = volume;
  64.    var _loc3_ = id;
  65.    if(_loc2_ eq "")
  66.    {
  67.       _loc2_ = 1;
  68.    }
  69.    var _loc1_ = this.getChannel();
  70.    _loc1_.attachSound(_loc3_);
  71.    _loc1_.start(0,99999);
  72.    _loc1_.setVolume(Math.min(100,_loc2_ * 100));
  73.    _loc1_.volume = _loc2_ * 100;
  74.    _loc1_.locked = true;
  75.    _loc1_.libId = _loc3_;
  76.    _loc1_.playing = true;
  77.    this.loops[_loc3_] = _loc1_;
  78.    return _loc1_;
  79. };
  80. snd.fadeChannel = function(channel, to, time)
  81. {
  82.    var _loc1_ = channel;
  83.    var _loc2_ = to;
  84.    if(_loc2_ == -1)
  85.    {
  86.       _loc1_.fadeOutFlag = true;
  87.       _loc2_ = 0;
  88.    }
  89.    if(time == 0)
  90.    {
  91.       _loc1_.volume = _loc2_ * 100;
  92.       _loc1_.setVolume(_loc1_.volume);
  93.       _loc1_.fading = false;
  94.    }
  95.    else
  96.    {
  97.       _loc1_.fading = true;
  98.       _loc1_.fadeTo = Math.min(100,_loc2_ * 100);
  99.       _loc1_.fadeSpeed = (_loc2_ - _loc1_.volume) / time;
  100.    }
  101. };
  102. snd.playEvent = function(id, volume)
  103. {
  104.    var _loc2_ = volume;
  105.    if(_loc2_ eq "")
  106.    {
  107.       _loc2_ = 1;
  108.    }
  109.    var _loc1_ = this.getChannel();
  110.    _loc1_.attachSound(id);
  111.    _loc1_.start(0,0);
  112.    _loc1_.setVolume(Math.min(100,_loc2_ * 100));
  113.    _loc1_.volume = _loc2_ * 100;
  114.    _loc1_.libId = id;
  115.    _loc1_.playing = true;
  116.    return _loc1_;
  117. };
  118. snd.getChannel = function()
  119. {
  120.    var _loc3_ = this;
  121.    var oldestPos = -1;
  122.    var oldestId = -1;
  123.    var _loc2_ = 0;
  124.    while(_loc2_ < _loc3_.channels.length)
  125.    {
  126.       var _loc1_ = _loc3_.channels[_loc2_];
  127.       if(!_loc1_.locked)
  128.       {
  129.          if(!_loc1_.playing)
  130.          {
  131.             return _loc3_.channels[_loc2_];
  132.          }
  133.          if(_loc1_.position > oldestPos)
  134.          {
  135.             oldestPos = _loc1_.position;
  136.             oldestId = _loc1_.id;
  137.          }
  138.       }
  139.       _loc2_ = _loc2_ + 1;
  140.    }
  141.    if(oldestId != -1)
  142.    {
  143.       trace("return old: " + oldestId);
  144.       return _loc3_.channels[oldestId];
  145.    }
  146.    trace("##ERROR: SOUND : no free channel..");
  147. };
  148. snd.stop = function(id)
  149. {
  150.    var _loc2_ = this;
  151.    var _loc3_ = id;
  152.    if(_loc3_ eq "")
  153.    {
  154.       return _loc2_.stopAll();
  155.    }
  156.    var _loc1_ = 0;
  157.    while(_loc1_ < _loc2_.channels.length)
  158.    {
  159.       if(_loc2_.channels[_loc1_].libId == _loc3_)
  160.       {
  161.          _loc2_.channels[_loc1_].stop();
  162.          _loc2_.channels[_loc1_].locked = false;
  163.          _loc2_.channels[_loc1_].playing = false;
  164.          _loc2_.channels[_loc1_].locked = false;
  165.       }
  166.       _loc1_ = _loc1_ + 1;
  167.    }
  168. };
  169. snd.stopAll = function()
  170. {
  171.    var _loc1_ = this;
  172.    for(var _loc2_ in _loc1_.channels)
  173.    {
  174.       _loc1_.channels[_loc2_].stop();
  175.       _loc1_.channels[_loc2_].locked = false;
  176.       _loc1_.channels[_loc2_].fading = false;
  177.       _loc1_.channels[_loc2_].playing = false;
  178.    }
  179. };
  180.