# External loaded swf content player scrub bar problem

**URL:** https://forum.kirupa.com/t/external-loaded-swf-content-player-scrub-bar-problem/326309
**Category:** flash
**Created:** [December 6, 2011, 2:44pm UTC](https://forum.kirupa.com/t/external-loaded-swf-content-player-scrub-bar-problem/326309 "2011-12-06T14:44:58Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Dimitree](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/dimitree/32/2530_2.png) [@Dimitree](https://forum.kirupa.com/u/Dimitree)
#### Post date: [December 6, 2011, 2:44pm UTC](https://forum.kirupa.com/t/external-loaded-swf-content-player-scrub-bar-problem/326309/1 "2011-12-06T14:44:58Z")

</div>

Hi, I m trying to make a content player that plays externally loaded swfs. I haven’t found anything on the net that pleases me so decided to built one.  
But I have a problem with the scrub bar. When I try to drag it it jumps back. The same code I am about to post works fine when the content is a [COLOR="#B22222"]MovieClip[/COLOR] and **NOT** an [COLOR="#B22222"]externally loaded swf[/COLOR].  
What am I missing?

```auto

var loader:Loader = new Loader();
addChild(loader);
var animLength: int;

loader.mask = mask_mc;
loader.load(new URLRequest("L1P1.swf"));
var currentMovie:MovieClip = new MovieClip();

play_mc.buttonMode = true;
stop_mc.buttonMode = true;
stop_mc.addEventListener(MouseEvent.CLICK, button_pause);	
play_mc.addEventListener(MouseEvent.CLICK, playClicked);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, trackLoad);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);

function playClicked(event:Event):void
{
	
	currentMovie.play();
	
}

function button_pause(e:Event):void{
	  currentMovie.stop();
	
	  }
function trackLoad(event:ProgressEvent):void
{
	var perLoaded:Number = event.bytesLoaded / event.bytesTotal;
	prog_mc.preload.scaleX = perLoaded;
	
}

function swfLoaded(event:Event):void
{
	addEventListener(Event.ENTER_FRAME, trackPlayback);
	var scale:Number = Math.min( mask_mc.width / MovieClip(loader.content).width,
                            mask_mc.height / MovieClip(loader.content).height );
	MovieClip(loader.content).scaleX = MovieClip(loader.content).scaleY = scale;
	//currentMovie.stop();
	currentMovie = MovieClip(loader.content);
	trace(currentMovie.totalFrames);
	animLength = currentMovie.totalFrames;
}

function trackPlayback(event:Event):void
{
	var perPlayed:Number = MovieClip(loader.content).currentFrame / MovieClip(loader.content).totalFrames;
	prog_mc.drag.x = (prog_mc.width - prog_mc.drag.width) * perPlayed;
}

var leftBound : Number = prog_mc.drag.x;
var rightBound : Number = prog_mc.drag.x + prog_mc.drag.width;
var dragBound : Rectangle = new Rectangle(leftBound, prog_mc.drag.y, prog_mc.drag.width-10, 0);
var calcWidth : Number = prog_mc.drag.width / animLength;
var animPlaying : Boolean = false;

prog_mc.drag.x = leftBound;
prog_mc.drag.buttonMode = true;
prog_mc.drag.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseEvents);

function handleMouseEvents(evt:MouseEvent):void
{
   switch(String(evt.type)) {
      case MouseEvent.MOUSE_DOWN:
         prog_mc.drag.startDrag(true, dragBound);
         stage.addEventListener(MouseEvent.MOUSE_UP, handleMouseEvents);
        currentMovie.addEventListener(Event.ENTER_FRAME, scrubMovie);
		
		trace(animLength);
         
         if (animPlaying) stopAnimation();
         
      break;
      case MouseEvent.MOUSE_UP:
         prog_mc.drag.stopDrag();
         stage.removeEventListener(MouseEvent.MOUSE_UP, handleMouseEvents);
         currentMovie.removeEventListener(Event.ENTER_FRAME, scrubMovie);
         
         if (animPlaying) playAnimation();
      break;
   }
}

////HERE IS THE SCRUB BAR UPDATE////////////////////////////////////////////////////////

function scrubMovie(evt:Event):void
{
var scrubPos : int = prog_mc.drag.x;
var gotoFrame : int = Math.ceil(scrubPos / calcWidth);
currentMovie.stop();
currentMovie.gotoAndPlay(gotoFrame);  

}

function togglePlay(evt:MouseEvent):void
{
   if (!animPlaying) {
      playAnimation();
      animPlaying = true;
      prog_mc.drag.addEventListener(Event.ENTER_FRAME, updateScrubber);
  

   } else {
      stopAnimation();
      animPlaying = false; 
	    prog_mc.drag.removeEventListener(Event.ENTER_FRAME, updateScrubber);
      
   }
}

function updateScrubber(evt:Event):void
{
   var percent : Number = currentMovie.currentFrame / animLength;
   prog_mc.drag.x = percent * prog_mc.drag.width-10;   
   
}
function playAnimation():void
{
   currentMovie.play();
   prog_mc.addEventListener(Event.ENTER_FRAME, updateScrubber);
}

function stopAnimation():void
{
   currentMovie.stop();
   prog_mc.removeEventListener(Event.ENTER_FRAME, updateScrubber);
}

```
