Changeset 3
- Timestamp:
- 06/06/08 00:38:39 (7 months ago)
- Location:
- trunk/as3
- Files:
-
- 17 modified
-
com/jeroenwijering/models/HTTPModel.as (modified) (1 diff)
-
com/jeroenwijering/player/Controller.as (modified) (1 diff)
-
com/jeroenwijering/player/Model.as (modified) (9 diffs)
-
com/jeroenwijering/player/Player.as (modified) (6 diffs)
-
com/jeroenwijering/player/View.as (modified) (1 diff)
-
com/jeroenwijering/utils/Configger.as (modified) (5 diffs)
-
com/jeroenwijering/utils/Skinner.as (modified) (5 diffs)
-
com/jeroenwijering/views/ControlbarView.as (modified) (2 diffs)
-
com/jeroenwijering/views/DisplayView.as (modified) (7 diffs)
-
com/jeroenwijering/views/ExternalView.as (modified) (4 diffs)
-
com/jeroenwijering/views/KeyboardView.as (modified) (3 diffs)
-
com/jeroenwijering/views/PlaylistButton.as (modified) (1 diff)
-
com/jeroenwijering/views/PlaylistView.as (modified) (3 diffs)
-
com/jeroenwijering/views/RightclickView.as (modified) (2 diffs)
-
player.fla (modified) (previous)
-
player.pdf (modified) (15 diffs)
-
player.swf (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
-
trunk/as3/com/jeroenwijering/models/HTTPModel.as
r1 r3 112 112 url += '&width='+model.config['width']; 113 113 url += '&client='+encodeURI(model.config['client']); 114 trace(url); 114 115 stream.play(url); 115 116 clearInterval(loadinterval); -
trunk/as3/com/jeroenwijering/player/Controller.as
r1 r3 240 240 fullscreen:false 241 241 }; 242 if(config['controlbar'] == 'b elow') {242 if(config['controlbar'] == 'bottom') { 243 243 dat.height -= config['controlbarsize']; 244 244 } 245 245 if(config['playlist'] == 'right') { 246 246 dat.width -= config['playlistsize']; 247 } else if(config['playlist'] == 'b elow') {247 } else if(config['playlist'] == 'bottom') { 248 248 dat.height -= config['playlistsize']; 249 249 } -
trunk/as3/com/jeroenwijering/player/Model.as
r1 r3 48 48 loader = new Loader(); 49 49 loader.contentLoaderInfo.addEventListener(Event.INIT,thumbHandler); 50 Draw.clear(skin.display.media);51 Draw.clear(skin.display.thumb);52 50 }; 53 51 … … 55 53 /** Item change: switch the curently active model if there's a new URL **/ 56 54 private function itemHandler(evt:ControllerEvent) { 57 skin.display.media.visible = false;55 // skin.display.media.visible = false; 58 56 if(current) { current.stop(); } 59 57 sendEvent(ModelEvent.STATE,{newstate:ModelStates.IDLE}); … … 72 70 break; 73 71 case 'video': 74 if(config['streamscript']) { 72 if(config['streamscript']) { 75 73 current = new HTTPModel(this); 76 } else { 74 } else { 77 75 current = new VideoModel(this); 78 76 } … … 83 81 } 84 82 if(playlist[evt.data.index]['image']) { 85 skin.display.thumb.visible = true;83 // skin.display.thumb.visible = true; 86 84 loader.load(new URLRequest(playlist[evt.data.index]['image'])); 87 85 } else { 88 skin.display.thumb.visible = false;86 // skin.display.thumb.visible = false; 89 87 } 90 88 }; … … 93 91 /** Place a loaded thumb on stage. **/ 94 92 private function thumbHandler(evt:Event) { 93 /* 95 94 var obj = skin.display.thumb; 96 95 Draw.clear(obj); … … 98 97 Bitmap(loader.content).smoothing = config['quality']; 99 98 Stretcher.stretch(obj,config['width'],config['height'],config['stretching']); 99 */ 100 100 }; 101 101 … … 103 103 /** Place a loaded mediafile on stage **/ 104 104 public function mediaHandler(chd:DisplayObject) { 105 /* 105 106 var obj = skin.display.media; 106 107 Draw.clear(obj); … … 109 110 skin.display.thumb.visible = false; 110 111 skin.display.media.visible = true; 112 */ 111 113 }; 112 114 … … 146 148 /** Resize the media and thumb. **/ 147 149 private function resizeHandler(evt:ControllerEvent) { 150 /* 148 151 Stretcher.stretch(skin.display.thumb,evt.data.width,evt.data.height,config['stretching']); 149 152 Stretcher.stretch(skin.display.media,evt.data.width,evt.data.height,config['stretching']); 153 */ 150 154 }; 151 155 -
trunk/as3/com/jeroenwijering/player/Player.as
r2 r3 10 10 import flash.display.MovieClip; 11 11 import flash.events.Event; 12 import flash.system.Capabilities;13 12 14 13 … … 18 17 /** A list with all default configuration values. **/ 19 18 private var defaults:Object = { 20 height:300,21 width:400,22 23 19 author:undefined, 24 20 captions:undefined, 25 21 description:undefined, 26 22 duration:0, 27 file: undefined,23 file:'http://www.jeroenwijering.com/upload/mrss.xml', 28 24 image:undefined, 29 25 link:undefined, … … 32 28 type:undefined, 33 29 34 controlbar:'below', 35 controlbarsize:20, 36 icons:true, 30 controlbar:'bottom', 37 31 logo:undefined, 38 32 playlist:'none', 39 33 playlistsize:180, 40 skin:'agriya.swf', 41 texts:false, 34 skin:undefined, 42 35 43 36 autostart:false, … … 56 49 abouttext:"About JW Player 4.0...", 57 50 aboutlink:"http://www.jeroenwijering.com/?page=about", 51 linktarget:'_self', 52 streamscript:'lighttpd', 53 tracecall:undefined, 54 58 55 client:undefined, 59 linktarget:'_self',60 streamscript:undefined,61 tracecall:undefined,62 version:'4.0 r1'56 controlbarheight:20, 57 height:300, 58 version:'4.0 r3', 59 width:400 63 60 }; 64 61 /** Object that loads all configuration variables. **/ … … 74 71 75 72 76 /** Constructor; loads config. **/ 77 public function Player(ply:MovieClip=undefined) { 78 if(!ply) { ply = this['player']; } 79 defaults['client'] = Capabilities.version; 80 configger = new Configger(ply); 73 /** Constructor; Loads config. **/ 74 public function Player() { 75 configger = new Configger(this); 81 76 configger.addEventListener(Event.COMPLETE,configHandler); 82 skinner = new Skinner(ply);83 skinner.addEventListener(Event.COMPLETE,skinHandler);84 77 configger.load(defaults); 85 78 }; … … 88 81 /** Config loading completed; now load skin. **/ 89 82 private function configHandler(evt:Event) { 83 skinner = new Skinner(this); 84 skinner.addEventListener(Event.COMPLETE,skinHandler); 90 85 skinner.load(configger.config['skin']); 91 86 }; -
trunk/as3/com/jeroenwijering/player/View.as
r2 r3 48 48 views.push(new RightclickView(this)); 49 49 if(_skin['controlbar']) { 50 views.push(new ControlbarView(this));50 //views.push(new ControlbarView(this)); 51 51 } 52 52 if(_skin['playlist']) { 53 views.push(new PlaylistView(this));53 //views.push(new PlaylistView(this)); 54 54 } 55 55 if(ExternalInterface.available || Capabilities.playerType == 'External') { -
trunk/as3/com/jeroenwijering/utils/Configger.as
r1 r3 7 7 8 8 9 import com.jeroenwijering.utils.Strings; 9 10 import flash.events.Event; 10 11 import flash.events.EventDispatcher; … … 13 14 import flash.net.URLRequest; 14 15 import flash.net.URLLoader; 15 import com.jeroenwijering.utils.Strings;16 import flash.system.Capabilities; 16 17 17 18 … … 42 43 public function load(def:Object) { 43 44 config = def; 45 config['client'] = 'FLASH '+Capabilities.version; 44 46 var xml = reference.root.loaderInfo.parameters['config']; 45 47 if(xml) { … … 75 77 /** Load configuration data from flashcookie. **/ 76 78 private function loadCookies() { 77 Configger.cookie = SharedObject.getLocal('com.jeroenwijering .utils','/');79 Configger.cookie = SharedObject.getLocal('com.jeroenwijering','/'); 78 80 compareWrite(Configger.cookie.data); 79 81 loadFlashvars(); … … 90 92 /** Compare and save new items in config, preserving datatype. **/ 91 93 private function compareWrite(obj:Object) { 92 for(var cfv in config) {94 for(var cfv in obj) { 93 95 var lfv = cfv.toLowerCase(); 94 if( obj[lfv] != undefined) {96 if(config[lfv] != undefined) { 95 97 config[lfv] = Strings.serialize(obj[lfv],config[cfv]); 98 } else { 99 config[lfv] = obj[lfv]; 96 100 } 97 101 } -
trunk/as3/com/jeroenwijering/utils/Skinner.as
r2 r3 16 16 17 17 18 /** Reference to the stage graphics **/18 /** Reference to the stage graphics. **/ 19 19 public var skin:MovieClip; 20 20 /** SWF skin loader reference **/ 21 21 private var loader:Loader; 22 /** Reference to the player itself. **/ 23 private var player:MovieClip; 22 24 /** Skinnable elements **/ 23 25 private var ELEMENTS:Array = new Array("controlbar","display","playlist"); … … 29 31 * @param skn The MovieClip that contains the display, playlist and controlbar. 30 32 **/ 31 public function Skinner( skn:MovieClip) {32 skin = skn;33 public function Skinner(ply:MovieClip) { 34 player = ply; 33 35 }; 34 36 … … 50 52 } 51 53 } else { 54 skin = player['player']; 52 55 dispatchEvent(new Event(Event.COMPLETE)); 53 56 } … … 64 67 private function loaderHandler(evt:Event) { 65 68 var cnt = MovieClip(loader.content); 69 /* 66 70 for(var i=0; i<cnt.numChildren; i++) { 67 71 var ncd = cnt.getChildAt(i); … … 73 77 } 74 78 } 79 */ 75 80 dispatchEvent(new Event(Event.COMPLETE)); 76 81 }; -
trunk/as3/com/jeroenwijering/views/ControlbarView.as
r2 r3 296 296 switch(evt.data.newstate) { 297 297 case ModelStates.PLAYING: 298 if(view.config['controlbar'] == ' above') {298 if(view.config['controlbar'] == 'over') { 299 299 hiding = setTimeout(moveTimeout,1000); 300 300 view.skin.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); … … 305 305 break; 306 306 default: 307 if(view.config['controlbar'] == ' above') {307 if(view.config['controlbar'] == 'over') { 308 308 clearTimeout(hiding); 309 309 bar.visible = true; -
trunk/as3/com/jeroenwijering/views/DisplayView.as
r1 r3 36 36 'bufferIcon', 37 37 'linkIcon', 38 'fullscreenIcon',39 38 'muteIcon' 40 39 ); … … 45 44 view = vie; 46 45 view.addControllerListener(ControllerEvent.ERROR,errorHandler); 47 view.addControllerListener(ControllerEvent.ITEM,itemHandler);48 46 view.addControllerListener(ControllerEvent.MUTE,muteHandler); 49 47 view.addControllerListener(ControllerEvent.RESIZE,resizeHandler); … … 64 62 /** Receive buffer updates. **/ 65 63 private function bufferHandler(evt:ModelEvent) { 66 if(evt.data.percentage == 0) { 67 display.bufferIcon.txt.text = ""; 68 } else { 69 display.bufferIcon.txt.text = Strings.zero(evt.data.percentage); 70 } 64 display.bufferIcon.txt.text = Strings.zero(evt.data.percentage); 71 65 }; 72 66 … … 87 81 88 82 89 /** Show a mute icon if playing. **/ 90 private function itemHandler(evt:ControllerEvent) { 91 if(view.config['texts'] == true) { 92 display.texts.title.text = view.playlist[evt.data.index]['title']; 93 display.texts.author.text = view.playlist[evt.data.index]['author']; 94 } else { 95 display.texts.visible = false; 96 } 97 }; 98 99 100 /** Logo loaded; now position it **/ 83 /** Logo loaded; now position it. **/ 101 84 private function logoHandler(evt:Event) { 102 85 if(margins[0] > margins[2]) { 103 display.logo.x = display.back.width - margins[2] -display.logo.width;86 display.logo.x = display.back.width- margins[2]-display.logo.width; 104 87 } else { 105 88 display.logo.x = margins[0]; 106 89 } 107 90 if(margins[1] > margins[3]) { 108 display.logo.y = display.back.height - margins[3] -display.logo.height;91 display.logo.y = display.back.height- margins[3]-display.logo.height; 109 92 } else { 110 93 display.logo.y = margins[1]; … … 129 112 var wid = evt.data.width; 130 113 var hei = evt.data.height; 131 display.back.width = display.mediaMask.width = wid; 132 display.back.height = display.mediaMask.height = hei; 133 if(view.config['texts']) { 134 display.texts.back.width = display.texts.title.width = display.texts.author.width = wid; 135 } 114 display.back.width = display.masker.width = wid; 115 display.back.height = display.masker.height = hei; 136 116 for(var i in ICONS) { 137 117 display[ICONS[i]].x = Math.round(wid/2); … … 161 141 display.logo.x, 162 142 display.logo.y, 163 display.back.width - display.logo.x -display.logo.width,164 display.back.height - display.logo.y -display.logo.height143 display.back.width-display.logo.x-display.logo.width, 144 display.back.height-display.logo.y-display.logo.height 165 145 ); 166 146 loader = new Loader(); … … 183 163 setIcon('bufferIcon'); 184 164 } else { 185 if(view.config['playlist'] == 'above') {186 setIcon();187 return;188 }189 165 switch(view.config.displayclick) { 190 case 'fullscreen':191 setIcon('fullscreenIcon');192 break;193 166 case 'play': 194 167 setIcon('playIcon'); -
trunk/as3/com/jeroenwijering/views/ExternalView.as
r1 r3 1 1 /** 2 * Interface for javascript interaction .2 * Interface for javascript interaction and IDE tracing. 3 3 **/ 4 4 package com.jeroenwijering.views { … … 63 63 ExternalInterface.addCallback("addViewListener", addViewListener); 64 64 ExternalInterface.addCallback("sendEvent", view.sendEvent); 65 playerReady(); 65 66 } 66 67 }; … … 96 97 if(!dat) { dat = new Object(); } 97 98 dat.id = ExternalInterface.objectID; 99 dat.client = view.config['client']; 98 100 dat.version = view.config['version']; 99 101 for each (var itm in listeners) { … … 105 107 106 108 107 /** Return the config and javascript objects to callers. **/ 108 public function getConfig():Object { return view.config; }; 109 public function getPlaylist():Array { return view.playlist; }; 109 /** Return the config and playlist objects to javascript. **/ 110 public function getConfig():Object { 111 return view.config; 112 }; 113 public function getPlaylist():Array { 114 return view.playlist; 115 }; 116 117 118 /** Send a call to javascript that the player is ready. **/ 119 private function playerReady() { 120 var dat = { 121 id:ExternalInterface.objectID, 122 client:view.config['client'], 123 version:view.config['version'] 124 }; 125 try { 126 ExternalInterface.call("playerReady",dat); 127 } catch (err:Error) {} 128 }; 110 129 111 130 112 131 /** Forward events to tracer and subscribers. **/ 113 private function setController(evt:ControllerEvent) { forward('CONTROLLER',evt.type,evt.data); }; 114 private function setModel(evt:ModelEvent) { forward('MODEL',evt.type,evt.data); }; 115 private function setView(evt:ViewEvent) { forward('VIEW',evt.type,evt.data); }; 132 private function setController(evt:ControllerEvent) { 133 forward('CONTROLLER',evt.type,evt.data); 134 }; 135 private function setModel(evt:ModelEvent) { 136 forward('MODEL',evt.type,evt.data); 137 }; 138 private function setView(evt:ViewEvent) { 139 forward('VIEW',evt.type,evt.data); 140 }; 116 141 117 142 -
trunk/as3/com/jeroenwijering/views/KeyboardView.as
r1 r3 26 26 /** Process keyboard events. **/ 27 27 private function keyHandler(evt:KeyboardEvent) { 28 trace(evt.keyCode); 28 29 switch(evt.keyCode) { 29 30 case 37: … … 39 40 view.sendEvent('volume',view.config['volume']-10); 40 41 break; 41 case 80:42 view.sendEvent('play');43 break;44 42 case 67: 45 43 view.sendEvent('caption'); … … 54 52 view.sendEvent('mute'); 55 53 break; 54 case 80: 55 view.sendEvent('play'); 56 break; 57 case 81: 58 view.sendEvent('quality'); 59 break; 56 60 } 57 61 }; -
trunk/as3/com/jeroenwijering/views/PlaylistButton.as
r1 r3 35 35 buttonsize = back.width; 36 36 view = vie; 37 if(view) { 37 if(view) { 38 38 resize(wid); 39 39 setElements(); -
trunk/as3/com/jeroenwijering/views/PlaylistView.as
r1 r3 7 7 import com.jeroenwijering.events.*; 8 8 import com.jeroenwijering.player.View; 9 import com.jeroenwijering.views.PlaylistButton;10 9 import com.jeroenwijering.utils.Draw; 11 10 import flash.display.MovieClip;
