topical media & game development

talk show tell print

actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-SoundPlayer.ax

actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-SoundPlayer.ax [swf] flex


  package 
  {
          import fl.controls.LabelButton;
          import fl.controls.CheckBox;
          import fl.controls.ProgressBar;
          import fl.controls.TextInput;
          import fl.controls.Label;
          
          import flash.display.MovieClip;
          import flash.events.Event;
          import flash.events.MouseEvent;
          import flash.events.ProgressEvent;
          
          import flash.media.Sound;
          import flash.media.SoundMixer;
          
          import flash.utils.Timer;
          //import com.example.programmingas3.podcastplayer.SoundFacade;
          
          public class @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-SoundPlayer extends MovieClip
          {
                  public var s:actionscript_book_PodcastPlayer_com_example_programmingas3_podcastplayer_SoundFacade;
                  
                  public var positionTimer:Timer;
                  
                  /*public var playBtn:LabelButton;
                  public var pauseBtn:LabelButton;
                  public var resumeBtn:LabelButton;
                  public var stopBtn:LabelButton;
                  
                  public var autoplayCb:CheckBox;
                  
                  public var loadingPb:ProgressBar;
                  public var playingPb:ProgressBar;
                  
                  public var titleTxt:Label;
                  public var urlTxt:TextInput;*/
                                          
                  public function @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-SoundPlayer():void
                  {
                          // default to 5 seconds of buffer time instead of 1 second
                          SoundMixer.bufferTime = 5000;
                          
                          playBtn.addEventListener(MouseEvent.CLICK, onPlayBtn);
                          pauseBtn.addEventListener(MouseEvent.CLICK, onPauseBtn);
                          resumeBtn.addEventListener(MouseEvent.CLICK, onResumeBtn);
                          stopBtn.addEventListener(MouseEvent.CLICK, onStopBtn);
                          
                          //playBtn.enabled = false;
                          resumeBtn.enabled = false;
                          pauseBtn.enabled = false;
                          stopBtn.enabled = false;
                          
                          urlTxt.addEventListener("enter", onUrlChange);
                  }
                  
                  public function load(url:String, title:String = ""):void
                  {
                          if (url != null)
                          {
                                  this.loadingPb.setProgress(0, 1);
                                  this.playingPb.setProgress(0, 1);
                                  
                                  if (this.s != null && this.s.isPlaying)
                                  {
                                          this.s.stop();
                                  }
                                  
                                  this.s = new actionscript_book_PodcastPlayer_com_example_programmingas3_podcastplayer_SoundFacade(url, true, this.autoPlayCb.selected, true, 100000);
                                  
                                  this.s.addEventListener(flash.events.ProgressEvent.PROGRESS, onLoadProgress);
                                  this.s.addEventListener(flash.events.Event.OPEN, onLoadOpen);
                                  this.s.addEventListener(flash.events.Event.COMPLETE, onLoadComplete);
                                  this.s.addEventListener("playProgress", onPlayProgress);
                                  this.s.addEventListener(flash.events.Event.SOUND_COMPLETE, onPlayComplete);
  
                                  this.urlTxt.text = url;
                                  this.titleTxt.text = title;
                                  
                                  if (this.autoPlayCb.selected)
                                  {
                                          playBtn.enabled = false;
                                  }
                                  else
                                  {
                                          playBtn.enabled = true;
                                  }
  
                                  this.pauseBtn.enabled = false;
                                  this.resumeBtn.enabled = false;
                                  this.stopBtn.enabled = true;
                          }
                  }
                  
                  public function onLoadOpen(evt:Event):void
                  {
                          // none of the properties are available when the open event arrives
                          trace("onLoadOpen");
                          
                          if (!this.autoPlayCb.selected)
                          {
                                  playBtn.enabled = true;
                          }
                  }
                                          
                  public function onLoadProgress(evt:ProgressEvent):void
                  {
                          this.loadingPb.setProgress(evt.bytesLoaded, evt.bytesTotal);
                  }
                  
                  public function onLoadComplete(evt:Event):void
                  {
                          // all of the properties are available when the complete event arrives
                          trace("onLoadComplete");
                          if (this.s.isPlaying)
                          {
                                  // can't pause until the file is fully loaded
                                  pauseBtn.enabled = true;
                          }
                  }
                  
                  public function onPlayProgress(evt:ProgressEvent):void
                  {
                          this.playingPb.setProgress(evt.bytesLoaded, evt.bytesTotal);
                  }
                  
                  public function onPlayComplete(evt:Event):void
                  {
                          trace("onPlayComplete");
                          
                          this.playBtn.enabled = true;
                          this.stopBtn.enabled = false;
                  }
                          
                  public function onPlayBtn(evt:Event):void
                  {
                          if (this.s != null)
                          {
                                  this.s.play(); 
                                  this.stopBtn.enabled = true;
                                  if (this.s.isLoaded)
                                  {
                                          this.pauseBtn.enabled = true;
                                          this.resumeBtn.enabled = false;
                                  }
                          }
                  }
  
                  public function onPauseBtn(evt:Event):void
                  {
                          this.s.pause();
                          
                          this.playBtn.enabled = true;
                          this.pauseBtn.enabled = false;
                          this.resumeBtn.enabled = true;
                  }
                  
                  public function onResumeBtn(evt:Event):void
                  {
                          this.s.resume();
                          
                          this.pauseBtn.enabled = true;
                          this.resumeBtn.enabled = false;
                  }
                  
                  public function onStopBtn(evt:Event):void
                  {
                          this.s.stop();
                          this.playingPb.setProgress(0, 1);
                          
                          this.playBtn.enabled = true;
                          this.pauseBtn.enabled = false;
                          this.resumeBtn.enabled = false;
                          this.stopBtn.enabled = false;
                  }
                  
                  public function onUrlChange(evt:Event):void
                  {
                          if (urlTxt.text != "")
                          {
                                  if (this.s != null)
                                  {
                                          this.s.stop();
                                          this.playingPb.setProgress(0, 1);
                                  }
                                  load(urlTxt.text);
                          }
                  }
          }
  }


(C) Æliens 27/08/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.