home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Diversos / pup_idol.swf / scripts / uk / kerb / utils / sound / ExtendedSound.as next >
Encoding:
Text File  |  2008-08-07  |  5.5 KB  |  200 lines

  1. package uk.kerb.utils.sound
  2. {
  3.    import flash.events.TimerEvent;
  4.    import flash.media.Sound;
  5.    import flash.media.SoundChannel;
  6.    import flash.media.SoundTransform;
  7.    import flash.utils.Timer;
  8.    import flash.utils.getTimer;
  9.    
  10.    public class ExtendedSound extends Sound
  11.    {
  12.       
  13.       private static const TIMER_UPDATE_RATE:Number = 20;
  14.        
  15.       
  16.       private var fadeStartVolume:Number;
  17.       
  18.       private var fadeEndVolume:Number;
  19.       
  20.       private var panStartPosition:Number;
  21.       
  22.       private var panDuration:Number;
  23.       
  24.       private var panEndPosition:Number;
  25.       
  26.       private var fadeTimer:Timer;
  27.       
  28.       private var panTimer:Timer;
  29.       
  30.       private var fadeDuration:Number;
  31.       
  32.       private var panStartTime:Number;
  33.       
  34.       private var fadeStartTime:Number;
  35.       
  36.       private var soundChannel:SoundChannel;
  37.       
  38.       public function ExtendedSound()
  39.       {
  40.          super();
  41.       }
  42.       
  43.       public function fadeIn(param1:Number = 0, param2:Number = 1, param3:Number = 0, param4:int = 0, param5:Number = 0) : SoundChannel
  44.       {
  45.          fadeStartVolume = Math.max(0,Math.min(1,param1));
  46.          soundChannel = super.play(param5,param4,new SoundTransform(fadeStartVolume));
  47.          if(param3 > 0)
  48.          {
  49.             fadeStartTime = getTimer();
  50.             fadeDuration = param3;
  51.             fadeEndVolume = Math.max(0,Math.min(1,param2));
  52.             startFade();
  53.          }
  54.          return soundChannel;
  55.       }
  56.       
  57.       public function stop() : void
  58.       {
  59.          if(soundChannel != null)
  60.          {
  61.             soundChannel.stop();
  62.          }
  63.       }
  64.       
  65.       public function fadeOut(param1:Number = 0) : void
  66.       {
  67.          if(param1 > 0)
  68.          {
  69.             fadeStartTime = getTimer();
  70.             fadeDuration = param1;
  71.             fadeStartVolume = soundChannel.soundTransform.volume;
  72.             fadeEndVolume = 0;
  73.             startFade();
  74.          }
  75.          else
  76.          {
  77.             stop();
  78.          }
  79.       }
  80.       
  81.       protected function stopPan() : void
  82.       {
  83.          if(panTimer != null && panTimer.running)
  84.          {
  85.             panTimer.reset();
  86.          }
  87.       }
  88.       
  89.       protected function updatePan(param1:TimerEvent) : void
  90.       {
  91.          var _loc2_:Number = NaN;
  92.          var _loc3_:Number = (getTimer() - panStartTime) / panDuration;
  93.          if(_loc3_ >= 1)
  94.          {
  95.             stopPan();
  96.             _loc2_ = panEndPosition;
  97.          }
  98.          else if(_loc3_ > 0)
  99.          {
  100.             _loc2_ = _loc3_ * (panEndPosition - panStartPosition) + panStartPosition;
  101.          }
  102.          var _loc4_:Number = soundChannel.soundTransform.volume;
  103.          soundChannel.soundTransform = new SoundTransform(_loc4_,_loc2_);
  104.       }
  105.       
  106.       public function setPan(param1:Number) : void
  107.       {
  108.          var _loc2_:Number = NaN;
  109.          if(soundChannel != null)
  110.          {
  111.             param1 = Math.max(-1,Math.min(1,param1));
  112.             _loc2_ = soundChannel.soundTransform.volume;
  113.             soundChannel.soundTransform = new SoundTransform(_loc2_,param1);
  114.             stopPan();
  115.          }
  116.       }
  117.       
  118.       protected function stopFade() : void
  119.       {
  120.          if(fadeTimer != null && fadeTimer.running)
  121.          {
  122.             fadeTimer.reset();
  123.          }
  124.       }
  125.       
  126.       public function setVolume(param1:Number) : void
  127.       {
  128.          var _loc2_:Number = NaN;
  129.          if(soundChannel != null)
  130.          {
  131.             param1 = Math.max(0,Math.min(1,param1));
  132.             _loc2_ = soundChannel.soundTransform.pan;
  133.             soundChannel.soundTransform = new SoundTransform(param1,_loc2_);
  134.             stopFade();
  135.          }
  136.       }
  137.       
  138.       protected function updateFade(param1:TimerEvent) : void
  139.       {
  140.          var _loc2_:Number = NaN;
  141.          var _loc3_:Number = (getTimer() - fadeStartTime) / fadeDuration;
  142.          if(_loc3_ >= 1)
  143.          {
  144.             stopFade();
  145.             _loc2_ = fadeEndVolume;
  146.          }
  147.          else if(_loc3_ > 0)
  148.          {
  149.             _loc2_ = _loc3_ * (fadeEndVolume - fadeStartVolume) + fadeStartVolume;
  150.          }
  151.          var _loc4_:Number = soundChannel.soundTransform.pan;
  152.          soundChannel.soundTransform = new SoundTransform(_loc2_,_loc4_);
  153.       }
  154.       
  155.       protected function startPan() : void
  156.       {
  157.          if(panTimer == null)
  158.          {
  159.             panTimer = new Timer(TIMER_UPDATE_RATE);
  160.             panTimer.addEventListener(TimerEvent.TIMER,updatePan);
  161.          }
  162.          stopPan();
  163.          panTimer.start();
  164.       }
  165.       
  166.       public function panTo(param1:Number, param2:Number) : void
  167.       {
  168.          if(param2 > 0)
  169.          {
  170.             panStartTime = getTimer();
  171.             panDuration = param2;
  172.             panStartPosition = soundChannel.soundTransform.pan;
  173.             panEndPosition = param1;
  174.             startPan();
  175.          }
  176.          else
  177.          {
  178.             setPan(param1);
  179.          }
  180.       }
  181.       
  182.       override public function play(param1:Number = 0, param2:int = 0, param3:SoundTransform = null) : SoundChannel
  183.       {
  184.          soundChannel = super.play(param1,param2,param3);
  185.          return soundChannel;
  186.       }
  187.       
  188.       protected function startFade() : void
  189.       {
  190.          if(fadeTimer == null)
  191.          {
  192.             fadeTimer = new Timer(TIMER_UPDATE_RATE);
  193.             fadeTimer.addEventListener(TimerEvent.TIMER,updateFade);
  194.          }
  195.          stopFade();
  196.          fadeTimer.start();
  197.       }
  198.    }
  199. }
  200.