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/ControlbarComponentV4.as

    r979 r1238  
    1111        import com.longtailvideo.jwplayer.utils.Draw; 
    1212        import com.longtailvideo.jwplayer.utils.Logger; 
     13        import com.longtailvideo.jwplayer.utils.RootReference; 
    1314        import com.longtailvideo.jwplayer.utils.Stacker; 
    1415        import com.longtailvideo.jwplayer.utils.Strings; 
     
    2021        import flash.display.MovieClip; 
    2122        import flash.display.Sprite; 
     23        import flash.events.Event; 
    2224        import flash.events.MouseEvent; 
    2325        import flash.geom.ColorTransform; 
     
    6365                        animations = new Animations(this); 
    6466                        controlbarConfig = _player.config.pluginConfig("controlbar"); 
     67                        if (controlbarConfig['position'] == "over" && String(controlbarConfig['idlehide']) == "true") { 
     68                                alpha = 0; 
     69                        } 
     70                         
    6571                        if (!controlbarConfig['margin']) controlbarConfig['margin'] = 0;         
    6672                        // TODO: Remove Link button 
     
    8894                        _player.addEventListener(PlaylistEvent.JWPLAYER_PLAYLIST_UPDATED, itemHandler); 
    8995                        _player.addEventListener(PlaylistEvent.JWPLAYER_PLAYLIST_ITEM, itemHandler); 
     96                        RootReference.stage.addEventListener(Event.MOUSE_LEAVE, mouseLeftStage); 
     97                        RootReference.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    9098                        stacker = new Stacker(skin as MovieClip); 
    9199                        try { 
     
    366374 
    367375                 
     376                private function get fadeOnTimeout():Boolean { 
     377                        return controlbarConfig['position'] == 'over' || (_player.config.fullscreen && controlbarConfig['position'] != 'none'); 
     378                } 
     379                 
     380                private function get hideOnIdle():Boolean { 
     381                        return String(controlbarConfig['idlehide']) == "true"; 
     382                } 
     383                 
    368384                private function startFader():void { 
    369                         if (controlbarConfig['position'] == 'over' || (_player.config.fullscreen && controlbarConfig['position'] != 'none')) { 
     385                        if (fadeOnTimeout) { 
    370386                                if (!isNaN(hiding)) { 
    371387                                        clearTimeout(hiding); 
    372388                                } 
    373389                                hiding = setTimeout(moveTimeout, 2000); 
    374                                 _player.controls.display.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    375                                 addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    376390                        } 
    377391                } 
    378392                 
    379393                private function stopFader():void { 
     394                        if (alpha == 0) { 
     395                                animations.fade(1, 0.5); 
     396                        } 
    380397                        if (!isNaN(hiding)) { 
    381398                                clearTimeout(hiding); 
    382                                 try { 
    383                                         _player.controls.display.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    384                                         removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler); 
    385                                 } catch (e:Error) {} 
    386                         } 
    387                         Mouse.show(); 
    388                         animations.fade(1); 
    389                 } 
    390                  
    391                 /** Show above controlbar on mousemove. **/ 
     399                                Mouse.show(); 
     400                        } 
     401                } 
     402                 
     403                /** Show above controlbar on mousemove and restart the countdown. **/ 
    392404                private function moveHandler(evt:MouseEvent=null):void { 
    393405                        if (alpha == 0) { 
    394                                 animations.fade(1); 
    395                         } 
    396                         clearTimeout(hiding); 
    397                         hiding = setTimeout(moveTimeout, 2000); 
    398                         Mouse.show(); 
    399                 } 
    400                  
     406                                stopFader(); 
     407                                startFader(); 
     408                        } 
     409                } 
    401410                 
    402411                /** Hide above controlbar again when move has timed out. **/ 
    403                 private function moveTimeout():void { 
    404                         animations.fade(0); 
     412                private function moveTimeout(evt:Event=null):void { 
     413                        animations.fade(0, 0.5); 
    405414                        Mouse.hide(); 
    406415                } 
    407416                 
    408                 /** Process state changes **/ 
     417                /** If the mouse leaves the stage, hide the controlbar if position is 'over' **/ 
     418                private function mouseLeftStage(evt:Event=null):void { 
     419                        if (fadeOnTimeout) { 
     420                                if (_player.state == PlayerState.BUFFERING || _player.state == PlayerState.PLAYING || hideOnIdle) 
     421                                        animations.fade(0); 
     422                        } 
     423                } 
     424                 
     425 
    409426                private function stateHandler(evt:PlayerEvent=null):void { 
    410                         // TODO: Fix non-working fading 
    411                         clearTimeout(hiding); 
    412                         try { 
    413                                 switch (_player.state) { 
    414                                         case PlayerState.PLAYING: 
    415                                                 getSkinComponent('playButton').visible = false; 
    416                                                 getSkinComponent('pauseButton').visible = true; 
    417                                                 startFader(); 
    418                                                 break; 
    419                                         case PlayerState.PAUSED: 
    420                                                 getSkinComponent('playButton').visible = true; 
    421                                                 getSkinComponent('pauseButton').visible = false; 
     427                        switch(_player.state) { 
     428                                case PlayerState.BUFFERING: 
     429                                case PlayerState.PLAYING: 
     430                                        getSkinComponent('playButton').visible = false; 
     431                                        getSkinComponent('pauseButton').visible = true; 
     432                                        startFader(); 
     433                                        break; 
     434                                case PlayerState.PAUSED: 
     435                                case PlayerState.IDLE: 
     436                                        getSkinComponent('playButton').visible = true; 
     437                                        getSkinComponent('pauseButton').visible = false; 
     438                                        if (hideOnIdle) { 
     439                                                mouseLeftStage(); 
     440                                        } else { 
    422441                                                stopFader(); 
    423                                                 break; 
    424                                         case PlayerState.BUFFERING: 
    425                                                 getSkinComponent('playButton').visible = false; 
    426                                                 getSkinComponent('pauseButton').visible = true; 
    427                                                 stopFader(); 
    428                                                 break; 
    429                                         case PlayerState.IDLE: 
    430                                                 getSkinComponent('playButton').visible = true; 
    431                                                 getSkinComponent('pauseButton').visible = false; 
    432                                                 timeHandler(); 
    433                                                 stopFader(); 
    434                                                 break; 
    435                                 } 
    436                         } catch (e:Error) { 
    437                         } 
    438                 } 
    439  
     442                                        } 
     443                                        break; 
     444                        } 
     445                } 
    440446 
    441447                /** Process time updates given by the model. **/ 
Note: See TracChangeset for help on using the changeset viewer.