Ignore:
Timestamp:
08/25/10 19:40:11 (4 years ago)
Author:
pablo
Message:
  • Maintains aspect ratio going to/from fullscreen if "stretching" is set to "exactfit" 606
  • Automatically adds a thumbnail image for YouTube videos if one is not specified. 642
  • Fades the controlbar when the mouse leaves the screen. Also adds the 'controlbar.idlehide' option to keep the controlbar hidden when not playing. 883
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponent.as

    r1059 r1238  
    1111        import com.longtailvideo.jwplayer.utils.Animations; 
    1212        import com.longtailvideo.jwplayer.utils.Logger; 
     13        import com.longtailvideo.jwplayer.utils.RootReference; 
    1314        import com.longtailvideo.jwplayer.utils.Strings; 
    1415        import com.longtailvideo.jwplayer.view.interfaces.IControlbarComponent; 
     
    1718        import flash.display.MovieClip; 
    1819        import flash.display.Sprite; 
     20        import flash.events.Event; 
    1921        import flash.events.MouseEvent; 
    2022        import flash.geom.ColorTransform; 
     
    103105                protected var _bgColorSheet:Sprite; 
    104106                 
     107                protected var _fullscreen:Boolean = false; 
     108                 
    105109                protected var controlbarConfig:PluginConfig; 
    106110                protected var animations:Animations; 
     
    109113                public function ControlbarComponent(player:IPlayer) { 
    110114                        super(player, "controlbar"); 
     115                        controlbarConfig = _player.config.pluginConfig(_name); 
     116                        animations = new Animations(this); 
     117                        if (controlbarConfig['position'] == "over" && hideOnIdle) { 
     118                                alpha = 0; 
     119                        } 
     120                         
    111121                        _layoutManager = new ControlbarLayoutManager(this); 
    112122                        _dividers = []; 
     
    118128                        setTime(0, 0); 
    119129                        updateVolumeSlider(); 
    120                         controlbarConfig = _player.config.pluginConfig(_name); 
    121                         animations = new Animations(this); 
    122130                } 
    123131 
     
    133141                        player.addEventListener(PlayerEvent.JWPLAYER_LOCKED, lockHandler); 
    134142                        player.addEventListener(PlayerEvent.JWPLAYER_UNLOCKED, lockHandler); 
     143                        RootReference.stage.addEventListener(Event.MOUSE_LEAVE, mouseLeftStage); 
     144                        RootReference.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    135145                } 
    136146 
     
    153163                } 
    154164 
     165                private function get fadeOnTimeout():Boolean { 
     166                        return controlbarConfig['position'] == 'over' || (_player.config.fullscreen && controlbarConfig['position'] != 'none'); 
     167                } 
     168                 
     169                private function get hideOnIdle():Boolean { 
     170                        return String(controlbarConfig['idlehide']) == "true"; 
     171                } 
    155172                 
    156173                private function startFader():void { 
    157                         if (controlbarConfig['position'] == 'over' || (_player.config.fullscreen && controlbarConfig['position'] != 'none')) { 
     174                        if (fadeOnTimeout) { 
    158175                                if (!isNaN(hiding)) { 
    159176                                        clearTimeout(hiding); 
    160177                                } 
    161178                                hiding = setTimeout(moveTimeout, 2000); 
    162                                 _player.controls.display.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    163                                 addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    164179                        } 
    165180                } 
    166181                 
    167182                private function stopFader():void { 
     183                        if (alpha == 0) { 
     184                                animations.fade(1, 0.5); 
     185                        } 
    168186                        if (!isNaN(hiding)) { 
    169187                                clearTimeout(hiding); 
    170                                 try { 
    171                                         _player.controls.display.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    172                                         removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    173                                 } catch (e:Error) {} 
    174                         } 
    175                         Mouse.show(); 
    176                         animations.fade(1, 0.5); 
    177                 } 
    178                  
    179                 /** Show above controlbar on mousemove. **/ 
     188                                Mouse.show(); 
     189                        } 
     190                } 
     191                 
     192                /** Show above controlbar on mousemove and restart the countdown. **/ 
    180193                private function moveHandler(evt:MouseEvent=null):void { 
    181194                        if (alpha == 0) { 
    182                                 animations.fade(1, 0.5); 
    183                         } 
    184                         clearTimeout(hiding); 
    185                         hiding = setTimeout(moveTimeout, 2000); 
    186                         Mouse.show(); 
    187                 } 
    188                  
     195                                stopFader(); 
     196                                startFader(); 
     197                        } 
     198                } 
    189199                 
    190200                /** Hide above controlbar again when move has timed out. **/ 
    191                 private function moveTimeout():void { 
     201                private function moveTimeout(evt:Event=null):void { 
    192202                        animations.fade(0, 0.5); 
    193203                        Mouse.hide(); 
     204                } 
     205                 
     206                /** If the mouse leaves the stage, hide the controlbar if position is 'over' **/ 
     207                private function mouseLeftStage(evt:Event=null):void { 
     208                        if (fadeOnTimeout) { 
     209                                if (_player.state == PlayerState.BUFFERING || _player.state == PlayerState.PLAYING || hideOnIdle) 
     210                                animations.fade(0); 
     211                        } 
    194212                } 
    195213                 
     
    202220                                case PlayerState.PAUSED: 
    203221                                case PlayerState.IDLE: 
    204                                         stopFader(); 
     222                                        if (hideOnIdle) { 
     223                                                mouseLeftStage(); 
     224                                        } else { 
     225                                                stopFader(); 
     226                                        } 
    205227                                        break; 
    206228                        } 
     
    656678                        _bgColorSheet.height = background.height; 
    657679 
    658                         stopFader(); 
     680                        if (_fullscreen && !_player.config.fullscreen) { 
     681                                stopFader(); 
     682                        } 
     683                        _fullscreen = _player.config.fullscreen; 
    659684                        stateHandler(); 
    660685                        redraw(); 
Note: See TracChangeset for help on using the changeset viewer.