5 Replies Latest reply on Aug 25, 2009 10:55 AM by kglad

    Need audio to not play when moved to new position for audio player

    brostd Level 1

      I have an audio player that has a custom timeline and playhead. I am using a start and stop drag to move in the time line but the only way i can make it work is to have it play when ever I release the play head. I would like it to stay stopped if the player is paused and play if the player was playing.

       

      Thanks in advanced.

       

       

      var XMLLoaded:XML = new XML();
      XMLLoaded.ignoreWhite = true;
      var timesLoaded:Number = 0;
      this.createEmptyMovieClip("sound_mc", this.getNextHighestDepth);
      var sound_mc:Sound = new Sound();
      var finished:Boolean = false;
      var XMLSnippits:XML = new XML();
      var sStart:Array = new Array;
      var sText:Array = new Array;
      var sS;
      var audioFileLoaded:Boolean = false;
      var fileToLoadLink = _root.metaUrl;
      var callFile:String;
      var XMLMetaData:String;
      var totalSecs:Number;
      var snippitLength:Number;
      var XMLTimer;
      var soundLength;
      var currentTime;
      var audioTime;
      var timeUpdate;
      var amountLoaded;
      var time;
      var position;
      var timerStarted:String;
      var leftLimit;
      var rightLimit
      var secLength:Number;
      var min;
      var secs;
      var playHeadPlaying:Boolean = false;
      var pausedInterval:Number;


      play_btn._visible = true;
      pause_btn._visible = false;
      button_background._visible = true;
      timeline.loader.audioLoaded._width = 0;
      dash._visible = false;
      audioTotal._visible = false;
      cTime._visible = false;


      function startInterval():Void {
               sS = setInterval(soundStatus, 100);
               trace("startInterval is Running");
      }
         
      function stopInterval():Void {
              clearInterval(sS);
      }
         
         
      function soundStatus(){
              amountLoaded = sound_mc.getBytesLoaded() / sound_mc.getBytesTotal();
              time = sound_mc.duration;
              position = sound_mc.position;
              timeline.loader.audioLoaded._width = amountLoaded * 378;
              timeline.playHead._x = position / time * 378;
              //trace("Interval is playing");
              }
         

      // Load the Audio File

      function loadAudioFile():Void{   
         
          trace("loadAudioFile is being run");
         
         
         
          XMLLoaded.onLoad = function(bSuccess:Boolean):Void {
              timerStarted = "no";
              if (bSuccess){
                  if(XMLLoaded.firstChild.childNodes[0].childNodes[0].nodeValue == "yes"){
                      callFile = XMLLoaded.firstChild.childNodes[1].childNodes[0].nodeValue;
                      trace(timerStarted + " timer status");
                      clearInterval(XMLTimer);
                      audioFileLoaded = true;
                      sound_mc.loadSound(callFile, false);
                      startInterval();
                      //getURL("javascript:alert('"+callFile+"')", '');
                     
                      sound_mc.onLoad = function (bSucess:Boolean):Void{
                          if (bSucess) {
                              this.start();
                              playHeadPlaying = true;
                              words.htmlText = "Please choose a marker";
                              play_btn._visible = false;
                              pause_btn._visible = true;
                              button_background._visible = true;
                              timeline.playHead.enabled = true;
                              play_btn._alpha = 100;
                              play_btn.enabled = true;
                              button_background._alpha = 100;
                              clearInterval(XMLTimer);
                              if(snippitLength > 0){
                                  addMarkers();
                                  trace(snippitLength + " add markers");
                              }else{
                                  addTimer();
                                  trace(snippitLength + " add timer");
                              }
                          }
                      }
                     
                  }else{
                      if(timesLoaded == 10){
                          trace("There has been an Error Loading this file");
                          clearInterval(XMLTimer);
                      }else{
                     
                      }
                  }
              }
          }

          function loadXML():Void {
              XMLMetaData = XMLSnippits.firstChild.childNodes[2].childNodes[0].nodeValue;
              XMLLoaded.load(XMLMetaData);
              //XMLLoaded.load("call-process-yes.xml");
              timesLoaded += 1
              trace("XML has been loaded " + timesLoaded);
              XMLTimer = setInterval(loadXML, 3000);
          }
         
         
          loadXML();
      }


      // Loads Meta Data XML
      function fileAdded():Void {


          trace(sStart);
          timeline.playHead.enabled = false;
          words.html = true;
         
          XMLSnippits.ignoreWhite = true;

          XMLSnippits.onLoad = function(bSucess:Boolean):Void{
              if (bSucess){
                  snippitLength =  XMLSnippits.firstChild.childNodes[3].childNodes.length;
                  trace(snippitLength + " this is the length");
                  for(var j:Number = 0; j < snippitLength; j++){
                      sStart[j] = XMLSnippits.firstChild.childNodes[3].childNodes[j].childNodes[0].childNodes[0].nodeValue;
                      sText[j] = XMLSnippits.firstChild.childNodes[3].childNodes[j].childNodes[4].childNodes[0].nodeValue;
                  }
                  //var sStart:Number = 53;
                  //var sEnd:Number = 234;
                  trace("Sucess");
                  //getURL("javascript:alert('"+fileToLoadLink+"')", '');
                  trace(sStart);
              }else{
                  trace("Failed");
          }
      }

          //XMLSnippits.load(fileToLoadLink);
          XMLSnippits.load("call-meta-data.xml");
             
      }

      sound_mc.onSoundComplete = function():Void {
              finished = true;
              play_btn._visible = true;
              pause_btn._visible = false;
              words.htmlText = "Please choose a marker";
             
          }
         
          play_btn.onRelease = function():Void{
              if(audioFileLoaded){
                  if(finished){
                      sound_mc.start();
                      finished = false;
                  }else{
                      sound_mc.stop();
                      sound_mc.start(sound_mc.position/1000);
                  }
                  pause_btn._visible = true;
                  play_btn._visible = false;
                  playHeadPlaying = true;
                  clearInterval(pausedInterval);
              }else{
                  loadAudioFile();
                  words.htmlText = "Loading your call";
                  play_btn._alpha = 45;
                  play_btn.enabled = false;
                  button_background._alpha = 45;
              }
              trace(sStart + " is the sStart array");
          }   
         

          pause_btn.onRelease = function():Void{
         
              sound_mc.stop();
              pause_btn._visible = false;
              play_btn._visible = true;
              playHeadPlaying = false;
              pausedInterval = setInterval(updatePlayHead, 100);
          }
         

          timeline.playHead.onPress = function ():Void{
              startDragger();
             
          }
         
          timeline.playHead.onRelease = function ():Void{
              stopDragger();
              if(playHeadPlaying){
                 
              }else{
                  sound_mc.stop
              }
             
          }
         
          timeline.playHead.onReleaseOutside = function ():Void {
              stopDragger();
          }
         
          function startDragger():Void {
              stopInterval();
              leftLimit = timeline.loader._x;
              rightLimit = timeline.loader._width + timeline.loader._x;
              sound_mc.stop();
              play_btn._visible = false;
              pause_btn._visible = true;
              startDrag(timeline.playHead, false, leftLimit, timeline.loader._y, rightLimit, timeline.loader._y);
             
          }
         
          function stopDragger():Void {
              soundLength = sound_mc.duration / 1000;
              stopDrag();
              sound_mc.start(timeline.playHead._x / timeline._width * soundLength);
              trace("seconds equal:" + timeline.playHead._x / timeline._width * soundLength);
              startInterval();
          }
         
          function addMarkers():Void {
              totalSecs = XMLSnippits.firstChild.childNodes[1].childNodes[0].nodeValue;
              secLength = timeline.loader._width / totalSecs;
              for(var i:Number = 0; i < sStart.length; i++){
                  timeline.loader.attachMovie("marker", "marker" + i, i);
                  timeline.loader["marker" + i]._x = sStart[i] * secLength;
                  timeline.loader["marker" + i]._y = - 3;
                  // trace(i);
                  //trace("marker" + i + "is being made");
                  trace(timeline.loader["marker" + i]._name);
              }
          }
      function addTimer():Void {
          timeUpdate = setInterval(checkTime, 500);
          audioTime = convertSecs(sound_mc.duration/1000);
          audioTotal.text = audioTime;
          trace(currentTime);
          words._visible = false;
          dash._visible = true;
          cTime._visible = true;
          audioTotal._visible = true;
      }

      function convertSecs(sec:Number):String{
          sec = Math.round(sec);
          min = Math.floor(sec/60);
          secs = sec - (min*60);
          secs = String(Math.round(secs*100)/100);
          if(Number(secs) < 10){
              secs = "0"+secs;
          }
          return min+":"+secs;
      }

      function checkTime():Void {
          currentTime = convertSecs(sound_mc.position/1000);
          cTime.text = currentTime;
      }

      function updatePlayHead():Void{
         
      }
      fileAdded();