Changeset 1282


Ignore:
Timestamp:
09/17/10 13:38:40 (3 years ago)
Author:
pablo
Message:
  • Returns some missing accessibility features - tabbing buttons, accessibility naming - into PNG-skinned players (1047)
  • Fixes player config issue for v4 plugins (1043)
  • Addresses an issue where a closed NetConnection in RTMP doesn't halt the player
Location:
trunk/fl5
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/RTMPMediaProvider.as

    r1280 r1282  
    188188                /** Bandwidth and Framedrop checking for dynamic streaming. **/ 
    189189                private function getStreamInfo():void { 
    190                         var bwd:Number = Math.round(_stream.info.maxBytesPerSecond * 8 / 1024); 
    191                         var drf:Number = _stream.info.droppedFrames; 
    192                         _streamInfo.push({bwd:bwd,drf:drf}); 
    193                         var len:Number = _streamInfo.length; 
    194                         if(len > 5) { 
    195                                 bwd = Math.round((_streamInfo[len-1].bwd + _streamInfo[len-2].bwd + _streamInfo[len-3].bwd +  
    196                                         _streamInfo[len-4].bwd+ + _streamInfo[len-5].bwd)/5); 
    197                                 drf = Math.round((_streamInfo[len-1].drf - _streamInfo[len-5].drf)*2)/10; 
    198                                 if(item.levels.length > 0 && item.getLevel(bwd,config.width) != item.currentLevel) { 
    199                                         Logger.log("swapping to another level b/c of bandwidth",bwd.toString()); 
    200                                         swap(item.getLevel(bwd, config.width)); 
    201                                 } 
    202                                 if(item.levels.length > 0 && drf > 7 && item.currentLevel < item.levels.length-1) { 
    203                                         var lvl:Number = item.currentLevel; 
    204                                         item.blacklistLevel(lvl); 
    205                                         setTimeout(unBlacklist,30000,lvl); 
    206                                         sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {type:'blacklist',level:lvl,state:true}}); 
    207                                         Logger.log("swapping to another level b/c of framedrops",drf.toString()); 
    208                                         swap(item.getLevel(bwd, config.width)); 
    209                                 } 
    210                                 sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {bandwidth:bwd,droppedFrames:drf}}); 
     190                        if (!_stream) { 
     191                                clearInterval(_streamInfoInterval); 
     192                                return; 
     193                        } 
     194                        try { 
     195                                var bwd:Number = Math.round(_stream.info.maxBytesPerSecond * 8 / 1024); 
     196                                var drf:Number = _stream.info.droppedFrames; 
     197                                _streamInfo.push({bwd:bwd,drf:drf}); 
     198                                var len:Number = _streamInfo.length; 
     199                                if(len > 5) { 
     200                                        bwd = Math.round((_streamInfo[len-1].bwd + _streamInfo[len-2].bwd + _streamInfo[len-3].bwd +  
     201                                                _streamInfo[len-4].bwd+ + _streamInfo[len-5].bwd)/5); 
     202                                        drf = Math.round((_streamInfo[len-1].drf - _streamInfo[len-5].drf)*2)/10; 
     203                                        if(item.levels.length > 0 && item.getLevel(bwd,config.width) != item.currentLevel) { 
     204                                                Logger.log("swapping to another level b/c of bandwidth",bwd.toString()); 
     205                                                swap(item.getLevel(bwd, config.width)); 
     206                                        } 
     207                                        if(item.levels.length > 0 && drf > 7 && item.currentLevel < item.levels.length-1) { 
     208                                                var lvl:Number = item.currentLevel; 
     209                                                item.blacklistLevel(lvl); 
     210                                                setTimeout(unBlacklist,30000,lvl); 
     211                                                sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {type:'blacklist',level:lvl,state:true}}); 
     212                                                Logger.log("swapping to another level b/c of framedrops",drf.toString()); 
     213                                                swap(item.getLevel(bwd, config.width)); 
     214                                        } 
     215                                        sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {bandwidth:bwd,droppedFrames:drf}}); 
     216                                } 
     217                        } catch(e:Error) { 
     218                                Logger.log("There was an error attempting to get stream info: " + e.message); 
    211219                        } 
    212220                }; 
     
    603611                                        } 
    604612                                        break; 
    605                 case 'NetConnection.Connect.Failed': 
    606                     stop(); 
     613                                case 'NetConnection.Connect.Closed': 
     614                                        stop(); 
     615                                        break; 
     616                                case 'NetConnection.Connect.Failed': 
     617                                        stop(); 
    607618                                        sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_ERROR, {message: "Server not found: " + item.streamer});  
    608                     break; 
     619                                        break; 
    609620                case 'NetStream.Play.UnpublishNotify': 
    610621                    stop(); 
  • trunk/fl5/src/com/longtailvideo/jwplayer/player/JavascriptAPI.as

    r1270 r1282  
    274274                 
    275275                protected function js_getPlaylist():Array { 
    276                         return JavascriptSerialization.playlistToArray(_player.playlist); 
     276                        var playlistArray:Array = JavascriptSerialization.playlistToArray(_player.playlist); 
     277                        for (var i:Number=0; i < playlistArray.length; i++) { 
     278                                playlistArray[i] = JavascriptSerialization.stripDots(playlistArray[i]); 
     279                        } 
     280                        return playlistArray;  
    277281                } 
    278282                 
  • trunk/fl5/src/com/longtailvideo/jwplayer/player/JavascriptCompatibilityAPI.as

    r1246 r1282  
    129129                 
    130130                private function getJSPluginConfig(pluginId:String):Object { 
    131                         return _player.config.pluginConfig(pluginId); 
     131                        return JavascriptSerialization.stripDots(_player.config.pluginConfig(pluginId)); 
    132132                } 
    133133                 
  • trunk/fl5/src/com/longtailvideo/jwplayer/player/PlayerVersion.as

    r1280 r1282  
    33         
    44        public class PlayerVersion { 
    5                 protected static var _version:String = "5.3.1279"; 
     5                protected static var _version:String = "5.3.1282"; 
    66                 
    77                public static function get version():String { 
  • trunk/fl5/src/com/longtailvideo/jwplayer/utils/JavascriptSerialization.as

    r1228 r1282  
    4747                        } 
    4848                         
    49                         return stripDots(obj); 
     49                        return obj; 
    5050                } 
    5151                 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ComponentButton.as

    r998 r1282  
    1919 
    2020                                 
     21                protected static var currentTabIndex:Number = 100; 
     22                 
    2123                public function ComponentButton () { 
     24                        this.tabEnabled = true; 
     25                        this.tabChildren = false; 
     26                        this.tabIndex = currentTabIndex++; 
     27                        this.buttonMode = true; 
    2228                } 
    2329 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponent.as

    r1268 r1282  
    1515        import com.longtailvideo.jwplayer.view.interfaces.IControlbarComponent; 
    1616         
     17        import flash.accessibility.AccessibilityProperties; 
    1718        import flash.display.DisplayObject; 
    1819        import flash.display.MovieClip; 
     
    470471                        button.setOverIcon(getSkinElement(name + "ButtonOver")); 
    471472                        button.setBackground(getSkinElement(name + "ButtonBack")); 
    472                         button.tabEnabled = true; 
    473473                        button.clickFunction = function():void { 
    474474                                forward(new ViewEvent(event, eventData)); 
     
    564564 
    565565                private function addButtonDisplayObject(icon:DisplayObject, name:String, handler:Function=null):MovieClip { 
     566                        var acs:AccessibilityProperties = new AccessibilityProperties(); 
     567                        acs.name = name + 'Button'; 
    566568                        if (icon is ComponentButton) { 
    567569                                icon.name = name; 
    568570                                _buttons[name] = icon; 
     571                                icon.accessibilityProperties = acs; 
    569572                                return icon as ComponentButton; 
    570573                        } else if (icon) { 
     
    574577                                } 
    575578                                clipMC.name = name; 
     579                                clipMC.accessibilityProperties = acs; 
    576580                                clipMC.addChild(icon); 
    577581                                _buttons[name] = clipMC; 
     
    585589                } 
    586590                 
    587  
    588591                public function addButton(icon:DisplayObject, name:String, handler:Function=null):MovieClip { 
    589592                        if (_customButtons.indexOf(name) < 0) { 
     
    725728                        for each(var fieldName:String in ['elapsed','duration']) { 
    726729                                var textContainer:Sprite = getButton(fieldName) as Sprite; 
     730                                textContainer.tabEnabled = false; 
     731                                textContainer.buttonMode = false; 
    727732                                var textField:DisplayObject = textContainer.getChildByName('text'); 
    728733                                var textBackground:DisplayObject = textContainer.getChildByName('back'); 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarComponentV4.as

    r1268 r1282  
    8383                        skin.x = 0; 
    8484                        skin.y = 0; 
    85                         skin.tabChildren = true; 
    86                         skin.tabEnabled = false; 
     85                        skin.tabChildren = this.tabChildren = true; 
     86                        skin.tabEnabled = this.tabEnabled = false; 
    8787                        addChild(skin); 
    8888                        _player.addEventListener(PlayerStateEvent.JWPLAYER_PLAYER_STATE, stateHandler); 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/ControlbarLayoutManager.as

    r993 r1282  
    22        import flash.display.DisplayObject; 
    33        import flash.display.DisplayObjectContainer; 
     4        import flash.display.Sprite; 
    45        import flash.text.TextField; 
    56         
     
    1112                protected var _height:Number; 
    1213                 
     14                protected var _tabLeft:Number; 
     15                protected var _tabRight:Number; 
    1316                 
    1417                public function ControlbarLayoutManager(controlbar:ControlbarComponent) { 
     
    3033                                var controlbarPattern:RegExp = /\[(.*)\]\[(.*)\]\[(.*)\]/; 
    3134                                var result:Object = controlbarPattern.exec(_controlbar.layout); 
     35                                 
     36                                _tabLeft = 300; 
     37                                _tabRight = 399; 
     38                                 
    3239                                position(result[1], "left"); 
    3340                                position(result[3], "right"); 
     
    7077                 
    7178                private function place(displayObject:DisplayObject, align:String):void { 
     79                        var displayObjectSprite:Sprite = displayObject as Sprite; 
    7280                        if (align == "left") { 
     81                                if (displayObjectSprite && displayObjectSprite.buttonMode) { 
     82                                        displayObjectSprite.tabIndex = _tabLeft++; 
     83                                } 
    7384                                placeLeft(displayObject); 
    7485                        } else if (align == "right") { 
     86                                if (displayObjectSprite && displayObjectSprite.buttonMode) { 
     87                                        displayObjectSprite.tabIndex = _tabRight--; 
     88                                } 
    7589                                placeRight(displayObject); 
    7690                        } 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/DockComponent.as

    r1054 r1282  
    88        import com.longtailvideo.jwplayer.view.skins.SWFSkin; 
    99         
     10        import flash.accessibility.AccessibilityProperties; 
    1011        import flash.display.DisplayObject; 
    1112        import flash.display.MovieClip; 
     
    2728                /** Reference to the animations handler **/ 
    2829                private var animations:Animations; 
     30                /** Tab index for accessibility options **/ 
     31                private var currentTab:Number = 400; 
    2932                 
    3033                public function DockComponent(player:IPlayer) { 
     
    4952                                button.colorize = true; 
    5053                        } 
     54                        var acs:AccessibilityProperties = new AccessibilityProperties(); 
     55                        acs.name = (name ? name : icon.name) + "Button"; 
     56                        button.accessibilityProperties = acs; 
     57                        button.tabEnabled = true; 
     58                        button.tabChildren = false; 
     59                        button.tabIndex = currentTab++; 
    5160                        button.setOutIcon(icon); 
    5261                        button.outBackground = getSkinElement("button") as Sprite; 
  • trunk/fl5/src/com/longtailvideo/jwplayer/view/components/PlaylistComponent.as

    r1280 r1282  
    2020        import com.longtailvideo.jwplayer.view.skins.SWFSkin; 
    2121         
     22        import flash.accessibility.AccessibilityProperties; 
    2223        import flash.display.Bitmap; 
    2324        import flash.display.DisplayObject; 
     
    436437                                } 
    437438                        } 
     439                        var currentTab:Number=500; 
    438440                        for (var i:Number = 0; i < _player.playlist.length; i++) { 
    439441                                if (clr) { 
     
    445447                                                list.addChild(btn); 
    446448                                        } 
     449                                        btn.tabEnabled = true; 
     450                                        btn.tabChildren = false; 
     451                                        btn.tabIndex = currentTab++; 
    447452                                        var stc:Stacker = new Stacker(btn); 
    448453                                        btn.y = i * buttonheight; 
     
    543548                private function setContents(idx:Number):void { 
    544549                        var playlistItem:PlaylistItem = _player.playlist.getItemAt(idx); 
    545                         var title:TextField = getButton(idx).getChildByName("title") as TextField; 
    546                         var description:TextField = getButton(idx).getChildByName("description") as TextField; 
    547                         var duration:TextField = getButton(idx).getChildByName("duration") as TextField; 
    548                         var author:TextField = getButton(idx).getChildByName("author") as TextField; 
    549                         var tags:TextField = getButton(idx).getChildByName("tags") as TextField; 
     550                        var btn:Sprite = getButton(idx);  
     551                        var title:TextField = btn.getChildByName("title") as TextField; 
     552                        var description:TextField = btn.getChildByName("description") as TextField; 
     553                        var duration:TextField = btn.getChildByName("duration") as TextField; 
     554                        var author:TextField = btn.getChildByName("author") as TextField; 
     555                        var tags:TextField = btn.getChildByName("tags") as TextField; 
    550556                        if (playlistItem.image || playlistItem['playlist.image']) { 
    551557                                var imageFile:String = playlistItem['playlist.image'] ? playlistItem['playlist.image'] : playlistItem.image; 
    552558                                if (getConfigParam('thumbs') != false && _player.config.playlist != 'none' && buttonheight > 39 && getConfigParam("width") > 239) { 
    553                                         var img:Sprite = getButton(idx).getChildByName("image") as Sprite; 
     559                                        var img:Sprite = btn.getChildByName("image") as Sprite; 
    554560                                        if (img) { 
    555561                                                img.alpha = 0; 
     
    575581                        } 
    576582                        try { 
     583                                var acs:AccessibilityProperties = new AccessibilityProperties(); 
     584                                acs.name = playlistItem.title; 
     585                                acs.description = playlistItem.description; 
     586                                btn.accessibilityProperties = acs; 
    577587                                if (description) {  
    578588                                        description.htmlText = playlistItem.description;  
     
    600610                        } catch (e:Error) { 
    601611                        } 
    602                         img = getButton(idx).getChildByName("image") as MovieClip; 
     612                        img = btn.getChildByName("image") as MovieClip; 
    603613                        if (img && (!(playlistItem.image || playlistItem['playlist.image']) || getConfigParam('thumbs') == false || buttonheight < 40 || getConfigParam("width") < 240)) { 
    604614                                if (!img.getChildByName("imageBackground")) { 
    605                                         getButton(idx).getChildByName("image").visible = false; 
     615                                        btn.getChildByName("image").visible = false; 
    606616                                } 
    607617                        } 
    608618                        if (back && swfSkinned) { 
    609                                 getButton(idx).getChildByName("back").transform.colorTransform = back; 
     619                                btn.getChildByName("back").transform.colorTransform = back; 
    610620                        } 
    611621                } 
Note: See TracChangeset for help on using the changeset viewer.