/** * */ package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; import flash.utils.Timer; import flash.events.TimerEvent; import com.greensock.*; import com.greensock.plugins.*; import com.greensock.easing.*; import com.greensock.loading.VideoLoader; import com.greensock.events.LoaderEvent; //CLASS public class VideoControlsScrubber extends MovieClip { private var _bgBar:MovieClip; private var _loadBar:MovieClip; private var _playBar:MovieClip; private var _isScrub:Boolean; private var _vidLoader:VideoLoader; private var _enterFrameTimer:Timer; /** * */ public function VideoControlsScrubber():void { _bgBar = MovieClip(this["bg_bar"]); _loadBar = MovieClip(this["loading_bar"]); _playBar = MovieClip(this["playing_bar"]); _loadBar.scaleX = 0; _playBar.scaleX = 0; _loadBar.mouseEnabled = false; _playBar.mouseEnabled = false; } /** * */ public function videoToControl(vid:VideoLoader):void { _vidLoader = vid; _vidLoader.addEventListener(LoaderEvent.PROGRESS, loadProgress, false, 0, true); _bgBar.addEventListener(MouseEvent.MOUSE_DOWN, scrubDown, false, 0, true); _bgBar.buttonMode = true; //stage.addEventListener(Event.ENTER_FRAME, enterFrame_handler, false, 0, true); _enterFrameTimer = new Timer(50); _enterFrameTimer.addEventListener(TimerEvent.TIMER, enterFrame_handler, false, 0, true); _enterFrameTimer.start(); } /** * */ public function dispose():void { try { //stage.removeEventListener(Event.ENTER_FRAME, enterFrame_handler); _enterFrameTimer.stop(); _enterFrameTimer=null; } catch(e:*){}; } /** * */ private function loadProgress(e:LoaderEvent=null):void { _loadBar.scaleX = _vidLoader.progress; } /** * */ private function scrubDown(e:MouseEvent):void { _isScrub = true; stage.addEventListener(MouseEvent.MOUSE_UP, scrubUp, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseScrub, false, 0, true); } /** * */ private function scrubUp(e:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_UP, scrubUp); stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseScrub); _isScrub = false; } /** * */ private function enterFrame_handler(e:*=null):void { if(_isScrub) { var userX:Number = Math.min(_bgBar.mouseX, _bgBar.width); if(userX<0){ userX=0; } if(userX>_loadBar.width){ userX=_loadBar.width; } var percent:Number = userX / _bgBar.width; _vidLoader.gotoVideoTime(_vidLoader.duration*percent); } _playBar.scaleX = _vidLoader.playProgress; } /** * */ private function mouseScrub(e:MouseEvent):void { //e.updateAfterEvent(); } }//end class }//end package