Changeset 542


Ignore:
Timestamp:
10/28/09 19:12:15 (4 years ago)
Author:
pablo
Message:

Fixed MP3 seeking
Implemented repeat

Location:
trunk/fl5
Files:
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/fl5/src/com/longtailvideo/jwplayer/controller/Controller.as

    r540 r542  
    134134 
    135135                private function playlistLoadHandler(evt:PlaylistEvent=null):void { 
    136                         var loadIndex:Number = _model.config.item; 
    137136                        if (_model.config.shuffle) { 
    138                                 loadIndex = Math.floor(Math.random() * _model.playlist.length); 
    139                         } 
    140                         _model.playlist.currentIndex = loadIndex; 
     137                                shuffleItem(); 
     138                        } else { 
     139                                _model.playlist.currentIndex = _model.config.item; 
     140                        } 
     141                         
    141142                        if (_player.config.autostart) {  
    142                                 load(loadIndex);  
    143                         } 
     143                                load(_model.playlist.currentItem);  
     144                        } 
     145                } 
     146                 
     147                private function shuffleItem():void { 
     148                        _model.playlist.currentIndex = Math.floor(Math.random() * _model.playlist.length);  
    144149                } 
    145150 
     
    157162                 
    158163                private function completeHandler(evt:MediaEvent):void { 
    159                          
     164                        switch (_model.config.repeat) { 
     165                                case RepeatOptions.SINGLE: 
     166                                        play(); 
     167                                        break; 
     168                                case RepeatOptions.ALWAYS: 
     169                                        if (_model.playlist.currentIndex == _model.playlist.length-1 && !_model.config.shuffle) { 
     170                                                _model.playlist.currentIndex = 0; 
     171                                                play(); 
     172                                        } else { 
     173                                                next(); 
     174                                        } 
     175                                        break; 
     176                                case RepeatOptions.LIST: 
     177                                        if (_model.playlist.currentIndex == _model.playlist.length-1 && !_model.config.shuffle) { 
     178                                                _model.playlist.currentIndex = 0; 
     179                                        } else { 
     180                                                next(); 
     181                                        } 
     182                                        break; 
     183                        } 
    160184                } 
    161185 
     
    219243                        if (_model.playlist.currentItem) { 
    220244                                switch (_player.state) { 
    221                                         case PlayerState.BUFFERING: 
    222                                         case PlayerState.PLAYING: 
    223                                                 _model.media.stop(); 
    224245                                        case PlayerState.IDLE: 
    225246                                                load(_model.playlist.currentItem); 
    226247                                                break; 
     248                                        case PlayerState.BUFFERING: 
     249                                        case PlayerState.PLAYING: 
     250                                                _model.media.seek(_model.playlist.currentItem.start); 
    227251                                        case PlayerState.PAUSED: 
    228252                                                _model.media.play(); 
     
    265289 
    266290                public function next():Boolean { 
    267                         if (_model.playlist.currentIndex == _model.playlist.length-1) {  
     291                        if (_model.config.shuffle) { 
     292                                shuffleItem();                           
     293                                play(); 
     294                                return true; 
     295                        } else if (_model.playlist.currentIndex == _model.playlist.length-1) {  
    268296                                return false; 
    269297                        } else { 
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/MediaProvider.as

    r540 r542  
    164164                 /** Completes video playback **/ 
    165165                 protected function complete():void { 
     166                        stop(); 
    166167                        sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_COMPLETE); 
    167                         stop(); 
    168168                 } 
    169169                  
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/SoundMediaProvider.as

    r529 r542  
    8888                override public function pause():void { 
    8989                        if (channel){ 
     90                                clearInterval(positionInterval); 
     91                                positionInterval = undefined; 
    9092                                channel.stop(); 
    9193                        } 
     
    139141                /** Seek in the sound. **/ 
    140142                override public function seek(pos:Number):void { 
    141                         if (sound && (pos >= (sound.bytesLoaded / sound.bytesTotal) * item.duration)) {  
     143                        if (sound && (pos < (sound.bytesLoaded / sound.bytesTotal) * item.duration)) {  
    142144                                clearInterval(positionInterval); 
    143145                                positionInterval = undefined; 
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/VideoMediaProvider.as

    r529 r542  
    6464                                stream.checkPolicyFile = true; 
    6565                                stream.play(item.file); 
     66                        } else { 
     67                                seek(0); 
    6668                        } 
    6769                        positionInterval = setInterval(positionHandler, 200); 
  • trunk/fl5/src/com/longtailvideo/jwplayer/model/PlayerConfig.as

    r540 r542  
    44        import com.longtailvideo.jwplayer.utils.Configger; 
    55        import com.longtailvideo.jwplayer.utils.Logger; 
     6        import com.longtailvideo.jwplayer.utils.Stretcher; 
    67        import com.longtailvideo.jwplayer.utils.Strings; 
    78        import com.longtailvideo.jwplayer.utils.TypeChecker; 
     
    3233                private var _shuffle:Boolean            = false;  
    3334                private var _smoothing:Boolean          = true;  
    34                 private var _stretching:String          = "uniform";  
     35                private var _stretching:String          = Stretcher.UNIFORM;  
    3536                private var _volume:Number                      = 90; 
    3637 
     
    306307                /** Set to list to play the entire playlist once, to always to continously play the song/video/playlist and to single to continue repeating the selected file in a playlist. @default none **/ 
    307308                public function get repeat():String { return _repeat; } 
    308                 public function set repeat(x:String):void { _repeat = x; } 
     309                public function set repeat(x:String):void { _repeat = x.toLowerCase(); } 
    309310 
    310311                /** Shuffle playback of playlist items. @default false **/ 
     
    318319                /** Defines how to resize images in the display. Can be none (no stretching), exactfit (disproportionate), uniform (stretch with black borders) or fill (uniform, but completely fill the display). @default uniform **/ 
    319320                public function get stretching():String{ return _stretching; } 
    320                 public function set stretching(x:String):void { _stretching = x; } 
     321                public function set stretching(x:String):void { _stretching = x.toLowerCase(); } 
    321322 
    322323                /** Startup volume of the player. Can be 0 to 100. Is saved in a cookie. @default 90 **/ 
  • trunk/fl5/src/com/longtailvideo/jwplayer/model/PlaylistItem.as

    r441 r542  
    1515                public var link:String                  = ""; 
    1616                public var mediaid:String               = ""; 
    17                 public var start:Number                 = -1; 
     17                public var start:Number                 = 0; 
    1818                public var streamer:String              = ""; 
    1919                public var tags:String                  = ""; 
  • trunk/fl5/src/com/longtailvideo/jwplayer/player/Player.as

    r540 r542  
    3030         */ 
    3131        public class Player extends Sprite { 
    32                 private static var playerVersion:String = "5.0.540 alpha"; 
     32                private static var playerVersion:String = "5.0.541 alpha"; 
    3333                private static var _commercial:Boolean = Boolean(CONFIG::commercial); 
    3434                 
  • trunk/fl5/src/com/longtailvideo/jwplayer/utils/Stretcher.as

    r397 r542  
    2929                        var ysc:Number = hei / clp.height; 
    3030                        switch (typ.toLowerCase()) { 
    31                                 case 'exactfit': 
     31                                case Stretcher.EXACTFIT: 
    3232                                        clp.width = wid; 
    3333                                        clp.height = hei; 
    3434                                        break; 
    35                                 case 'fill': 
     35                                case Stretcher.FILL: 
    3636                                        if (xsc > ysc) { 
    3737                                                clp.width *= xsc; 
     
    4242                                        } 
    4343                                        break; 
    44                                 case 'none': 
     44                                case Stretcher.NONE: 
    4545                                        clp.scaleX = 1; 
    4646                                        clp.scaleY = 1; 
    4747                                        break; 
    48                                 case 'uniform': 
     48                                case Stretcher.UNIFORM: 
    4949                                default: 
    5050                                        if (xsc > ysc) { 
Note: See TracChangeset for help on using the changeset viewer.