source: trunk/fl5/src/com/longtailvideo/jwplayer/player/Player.as @ 475

Revision 475, 5.8 KB checked in by pablo, 4 years ago (diff)

Playlist loading consistency fixes

Line 
1package com.longtailvideo.jwplayer.player {
2        import com.longtailvideo.jwplayer.controller.Controller;
3        import com.longtailvideo.jwplayer.events.PlayerEvent;
4        import com.longtailvideo.jwplayer.model.Model;
5        import com.longtailvideo.jwplayer.model.PlayerConfig;
6        import com.longtailvideo.jwplayer.model.Playlist;
7        import com.longtailvideo.jwplayer.plugins.IPlugin;
8        import com.longtailvideo.jwplayer.utils.Logger;
9        import com.longtailvideo.jwplayer.utils.RootReference;
10        import com.longtailvideo.jwplayer.view.PlayerComponents;
11        import com.longtailvideo.jwplayer.view.View;
12        import com.longtailvideo.jwplayer.view.interfaces.IPlayerComponent;
13        import com.longtailvideo.jwplayer.view.interfaces.ISkin;
14       
15        import flash.display.Sprite;
16        import flash.events.Event;
17       
18       
19        /**
20         * Sent when the player has been initialized and skins and plugins have been successfully loaded.
21         *
22         * @eventType com.longtailvideo.jwplayer.events.PlayerEvent.JWPLAYER_READY
23         */
24        [Event(name="jwplayerReady", type = "com.longtailvideo.jwplayer.events.PlayerEvent")]
25
26
27        /**
28         * Main class for JW Flash Media Player
29         *
30         * @author Pablo Schklowsky
31         */
32        public class Player extends Sprite {
33                private static var playerVersion:String = "5.0.475 alpha";
34                private static var _commercial:Boolean = Boolean(CONFIG::commercial);
35               
36                private var model:Model;
37                private var view:View;
38                private var controller:Controller;
39
40                /** Player constructor **/
41                public function Player() {
42                        new RootReference(this);
43                       
44                        try {
45                                this.addEventListener(Event.ADDED_TO_STAGE, setupPlayer);
46                        } catch (err:Error) {
47                                setupPlayer();
48                        }
49                }
50                               
51                private function setupPlayer(event:Event = null):void {
52                        try {
53                                this.removeEventListener(Event.ADDED_TO_STAGE, setupPlayer);
54                        } catch (err:Error) {
55                        }
56                        model = new Model();
57                        view = new View(this, model);
58                        controller = new Controller(this, model, view);
59
60                        model.addGlobalListener(forward);
61                        view.addGlobalListener(forward);
62                        controller.addGlobalListener(forward);
63
64                        // Initialize V4 "simulator" singleton
65                        var emu:PlayerV4Emulation = new PlayerV4Emulation(this);
66                        var jsAPI:JavascriptAPI = new JavascriptAPI(this);
67
68                        Logger.output = Logger.TRACE;
69
70                        controller.setupPlayer();
71                }
72
73                /**
74                 * Forwards all MVC events to interested listeners.
75                 * @param evt
76                 */
77                protected function forward(evt:PlayerEvent):void {
78                        Logger.log(evt.toString(), evt.type);
79                        dispatchEvent(evt);
80                }
81
82                /**
83                 * The player's current configuration
84                 */
85                public function get config():PlayerConfig {
86                        return model.config;
87                }
88
89                /**
90                 * Player version getter
91                 */
92                public static function get version():String {
93                        return playerVersion;
94                }
95               
96                /**
97                 * Player type getter
98                 */
99                public static function get commercial():Boolean {
100                        return _commercial;
101                }
102
103                /**
104                 * Reference to player's skin.  If no skin has been loaded, returns null.
105                 */
106                public function get skin():ISkin {
107                        return view.skin;
108                }
109
110                /**
111                 * The current player state
112                 */
113                public function get state():String {
114                        return model.state;
115                }
116
117                /**
118                 * The player's playlist
119                 */
120                public function get playlist():Playlist {
121                        return model.playlist;
122                }
123
124                /**
125                 * Set to true when the player is blocking playback.
126                 */
127                public function get isBlocking():Boolean {
128                        return controller.blocking;
129                }
130
131                /**
132                 * Request that the player block playback.  When the Player is blocking, the currently playing stream is
133                 * paused, and no new playback-related commands will be honored until <code>unblockPlayback</code> is
134                 * called.
135                 *
136                 * @param target Reference to plugin requesting playback blocking
137                 * @return <code>true</code>, if the blocking request is successful.  If another plugin is blocking,returns
138                 * <code>false</code>.
139                 */
140                public function blockPlayback(target:IPlugin):Boolean {
141                        return controller.blockPlayback(target);
142                }
143
144                /**
145                 * Unblocks the player.  If the player was buffering or playing when it was blocked, playback will resume.
146                 *
147                 * @param target Reference to the requesting plugin.
148                 * @return <code>true</code>, if <code>target</code> had previously requested player blocking.
149                 *
150                 */
151                public function unblockPlayback(target:IPlugin):Boolean {
152                        return controller.unblockPlayback(target);
153                }
154               
155                public function volume(volume:Number):Boolean {
156                        return controller.setVolume(volume);
157                }
158               
159                public function get mute():Boolean{
160                        return model.mute;
161                }
162               
163                public function set mute(state:Boolean):void {
164                        controller.mute(state);
165                }
166               
167                public function play():Boolean {
168                        return controller.play();
169                }
170
171                public function pause():Boolean {
172                        return controller.pause();     
173                }
174               
175                public function stop():Boolean {
176                        return controller.stop();
177                }
178               
179                public function seek(position:Number):Boolean {
180                        return controller.seek(position);
181                }
182               
183                public function load(item:*):Boolean {
184                        return controller.load(item);
185                }
186               
187                public function playlistItem(index:Number):Boolean {
188                        return controller.setPlaylistIndex(index);
189                }
190               
191                public function playlistNext():Boolean {
192                        return controller.next();
193                }
194
195                public function playlistPrev():Boolean {
196                        return controller.previous();
197                }
198               
199                /** Force a redraw of the player **/
200                public function redraw():Boolean {
201                        return controller.redraw();
202                }
203       
204                public function get fullscreen():Boolean {
205                        return model.fullscreen;
206                }
207               
208                public function set fullscreen(on:Boolean):void {
209                        controller.fullscreen(on);
210                }
211               
212                public function link(index:Number=NaN):Boolean {
213                        return controller.link(index);
214                }
215               
216                public function get controls():PlayerComponents {
217                        return view.components;
218                }
219               
220                public function overrideComponent(plugin:IPlayerComponent):void {
221                        view.overrideComponent(plugin);
222                }
223
224        }
225}
Note: See TracBrowser for help on using the repository browser.