Changeset 169
- Timestamp:
- 03/02/09 12:02:27 (4 years ago)
- Files:
-
- 42 added
- 3 deleted
- 20 edited
-
plugins/accessibility/accessibility.swf (modified) (previous)
-
plugins/slideshow (deleted)
-
plugins/snapshot (added)
-
plugins/snapshot/com (added)
-
plugins/snapshot/com/adobe (added)
-
plugins/snapshot/com/adobe/images (added)
-
plugins/snapshot/com/adobe/images/BitString.as (added)
-
plugins/snapshot/com/adobe/images/JPGEncoder.as (added)
-
plugins/snapshot/com/adobe/images/PNGEncoder.as (added)
-
plugins/snapshot/snapshot.fla (added)
-
plugins/snapshot/snapshot.jpg (added)
-
plugins/snapshot/snapshot.swf (added)
-
plugins/snapshot/snapshot.txt (added)
-
skins/stylish/stylish.fla (modified) (previous)
-
skins/stylish/stylish.swf (modified) (previous)
-
testing (added)
-
testing/files (added)
-
testing/files/asx.xml (added)
-
testing/files/atom.xml (added)
-
testing/files/bunnies.xml (added)
-
testing/files/bunny.flv (added)
-
testing/files/bunny.jpg (added)
-
testing/files/bunny.m4a (added)
-
testing/files/bunny.mp3 (added)
-
testing/files/bunny.mp4 (added)
-
testing/files/bunny.png (added)
-
testing/files/chapters.xml (added)
-
testing/files/config.xml (added)
-
testing/files/corrie.flv (added)
-
testing/files/corrie.jpg (added)
-
testing/files/corrie.mp3 (added)
-
testing/files/corrie.srt (added)
-
testing/files/corrie.xml (added)
-
testing/files/irss.xml (added)
-
testing/files/jquery.js (added)
-
testing/files/logo.png (added)
-
testing/files/longtail.gif (added)
-
testing/files/mrss.xml (added)
-
testing/files/smil.xml (added)
-
testing/files/streamers.xml (added)
-
testing/files/style.css (added)
-
testing/files/swfobject.js (added)
-
testing/files/xspf.xml (added)
-
testing/index.html (added)
-
testing/settings.js (added)
-
trunk/as3/autostarter.fla (deleted)
-
trunk/as3/autostarter.swf (deleted)
-
trunk/as3/com/jeroenwijering/models/ImageModel.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/models/YoutubeModel.as (modified) (3 diffs)
-
trunk/as3/com/jeroenwijering/parsers/ATOMParser.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/parsers/ItunesParser.as (added)
-
trunk/as3/com/jeroenwijering/parsers/MediaParser.as (modified) (2 diffs)
-
trunk/as3/com/jeroenwijering/parsers/RSSParser.as (modified) (3 diffs)
-
trunk/as3/com/jeroenwijering/parsers/SMILParser.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/parsers/TTParser.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/player/Controller.as (modified) (3 diffs)
-
trunk/as3/com/jeroenwijering/player/Model.as (modified) (2 diffs)
-
trunk/as3/com/jeroenwijering/player/SPLoader.as (modified) (2 diffs)
-
trunk/as3/com/jeroenwijering/plugins/Captions.as (modified) (9 diffs)
-
trunk/as3/com/jeroenwijering/plugins/Controlbar.as (modified) (2 diffs)
-
trunk/as3/com/jeroenwijering/plugins/Display.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/plugins/Playlist.as (modified) (2 diffs)
-
trunk/as3/player.fla (modified) (previous)
-
trunk/as3/player.swf (modified) (previous)
-
trunk/as3/readme.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/as3/com/jeroenwijering/models/ImageModel.as
r166 r169 82 82 if(position < item['duration']) { 83 83 model.sendEvent(ModelEvent.TIME,{position:position,duration:item['duration']}); 84 } else if (item['duration'] > 0 && model.config['respectduration']) {84 } else if (item['duration'] > 0) { 85 85 pause(); 86 86 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.COMPLETED}); -
trunk/as3/com/jeroenwijering/models/YoutubeModel.as
r166 r169 97 97 if(outgoing) { 98 98 var gid = getID(item['file']); 99 outgoing.send('AS3_'+unique,"loadVideoById",gid, 0);99 outgoing.send('AS3_'+unique,"loadVideoById",gid,item['start']); 100 100 model.mediaHandler(loader); 101 101 } … … 126 126 /** SWF loaded; add it to the tree **/ 127 127 public function onSwfLoadComplete():void { 128 outgoing.send('AS3_'+unique,"setSize",400,300);128 //outgoing.send('AS3_'+unique,"setSize",400,300); 129 129 model.config['mute'] == true ? volume(0): volume(model.config['volume']); 130 130 connected = true; … … 187 187 188 188 189 /** Resize the YT player. **/ 190 public function resize(wid:Number,hei:Number) { 191 outgoing.send('AS3_'+unique,"setSize",wid,hei); 192 }; 193 194 189 195 /** Seek to position. **/ 190 196 override public function seek(pos:Number):void { -
trunk/as3/com/jeroenwijering/parsers/ATOMParser.as
r168 r169 49 49 itm['date'] = i.text().toString(); 50 50 break; 51 case 'group':52 itm = MediaParser.parseGroup(i,itm);53 break;54 51 } 55 52 } -
trunk/as3/com/jeroenwijering/parsers/MediaParser.as
r161 r169 11 11 12 12 13 /** Prefix for the JW Player namespace. **/ 14 private static var PREFIX = 'media'; 15 16 13 17 /** 14 * Parse an MRSS group (Yahoo MediaRSS extension). 18 * Parse a feeditem for Yahoo MediaRSS extensions. 19 * The 'content' and 'group' elements can nest other MediaRSS elements. 15 20 * 16 21 * @param obj The entire MRSS XML object. … … 22 27 public static function parseGroup(obj:XML,itm:Object):Object { 23 28 for each (var i:XML in obj.children()) { 24 switch(i.localName()) {25 case 'content':26 if( !itm['file']) {29 if(i.namespace().prefix == MediaParser.PREFIX) { 30 switch(i.localName()) { 31 case 'content': 27 32 itm['file'] = i.@url.toString(); 33 if(i.@duration) { 34 itm['duration'] = Strings.seconds(i.@duration.toString()); 35 } 36 if(i.@start) { 37 itm['start'] = Strings.seconds(i.@start.toString()); 38 } 39 if(i.children().length() > 0) { 40 itm = MediaParser.parseGroup(i,itm); 41 } 42 break; 43 case 'title': 44 itm['title'] = i.text().toString(); 45 break; 46 case 'description': 47 itm['description'] = i.text().toString(); 48 break; 49 case 'keywords': 50 itm['tags'] = i.text().toString(); 51 break; 52 case 'thumbnail': 53 itm['image'] = i.@url.toString(); 54 break; 55 case 'credit': 56 itm['author'] = i.text().toString(); 57 break; 58 case 'player': 59 if(i.@url.indexOf('youtube.com') > 0) { 60 itm['file'] = i.@url.toString(); 61 } 62 break; 63 case 'group': 64 itm = MediaParser.parseGroup(i,itm); 65 break; 28 66 } 29 if(i.@start) {30 itm['start'] = Strings.seconds(i.@start.toString());31 }32 if(i.@duration) {33 itm['duration'] = Strings.seconds(i.@duration.toString());34 }35 if(i.children().length() >0) {36 itm = parseGroup(i,itm);37 }38 break;39 case 'description':40 itm['description'] = i.text().toString();41 break;42 case 'thumbnail':43 itm['image'] = i.@url.toString();44 break;45 case 'credit':46 itm['author'] = i.text().toString();47 break;48 case 'keywords':49 itm['tags'] = i.text().toString();50 break;51 case 'meta':52 itm[i.@type.toString()] = i.text().toString();53 break;54 67 } 55 68 } -
trunk/as3/com/jeroenwijering/parsers/RSSParser.as
r168 r169 34 34 for each (var i:XML in obj.children()) { 35 35 switch(i.localName()) { 36 case 'duration':37 itm['duration'] = Strings.seconds(i.text().toString());38 break;39 36 case 'enclosure': 40 37 itm['file'] = i.@url.toString(); … … 46 43 itm['date'] = i.text().toString(); 47 44 break; 48 case 'keywords':49 itm['tags'] = i.text().toString();50 break;51 45 case 'description': 52 itm['description'] = i.text().toString();53 break;54 case 'summary':55 46 itm['description'] = i.text().toString(); 56 47 break; … … 58 49 itm['link'] = i.text().toString(); 59 50 break; 60 case 'author': 61 itm['author'] = i.text().toString(); 62 break; 63 case 'group': 64 itm = MediaParser.parseGroup(i,itm); 51 case 'category': 52 if(itm['tags']) { 53 itm['tags'] += i.text().toString(); 54 } else { 55 itm['tags'] = i.text().toString(); 56 } 65 57 break; 66 58 } 67 59 } 60 itm = ItunesParser.parseEntry(obj,itm); 68 61 itm = MediaParser.parseGroup(obj,itm); 69 62 itm = JWParser.parseEntry(obj,itm); -
trunk/as3/com/jeroenwijering/parsers/SMILParser.as
r161 r169 54 54 itm['link'] = i.@href.toString(); 55 55 break; 56 case 'textstream': 57 itm['captions'] = i.@src.toString(); 56 case 'img': 57 if(itm['file']) { 58 itm['image'] = i.@src.toString(); 59 break; 60 } else { 61 itm = SMILParser.parseAttributes(i,itm); 62 } 58 63 break; 59 case 'img':60 itm['image'] = i.@src.toString();61 if(itm['file']) {62 break;63 }64 64 case 'video': 65 65 case 'audio': -
trunk/as3/com/jeroenwijering/parsers/TTParser.as
r166 r169 50 50 dur:Strings.seconds(dat.@dur), 51 51 end:Strings.seconds(dat.@end), 52 text:dat.children().toString().replace( "\n","")52 text:dat.children().toString().replace(new RegExp('\n?<br.*>\n?'),'\n') 53 53 }; 54 54 return obj; -
trunk/as3/com/jeroenwijering/player/Controller.as
r168 r169 158 158 return itm['streamer']; 159 159 } 160 // this is a small hack to enable youtube playlists to work by default.160 // this is a small hack to enable youtube links to work by default. 161 161 } else if(itm['file'].indexOf('youtube.com/w') > -1 || itm['file'].indexOf('youtube.com/v') > -1) { 162 162 return 'youtube'; … … 325 325 if(!ply[i]['duration']) { ply[i]['duration'] = 0; } 326 326 if(!ply[i]['start']) { ply[i]['start'] = 0; } 327 if(!ply[i]['streamer']) { ply[i]['streamer'] = config['streamer']; } 327 if(!ply[i]['streamer']) { 328 ply[i]['streamer'] = config['streamer']; 329 } 328 330 if(config['replace']) { 329 331 var arr:Array = config['replace'].split('|'); … … 331 333 } 332 334 ply[i]['type'] = getModelType(ply[i],true); 333 if(!ply[i]['type']) { ply.splice(i,1);}335 if(!ply[i]['type']) { ply.splice(i,1); } 334 336 } 335 337 if(ply.length > 0) { -
trunk/as3/com/jeroenwijering/player/Model.as
r168 r169 53 53 thumb = new Loader(); 54 54 thumb.contentLoaderInfo.addEventListener(Event.COMPLETE,thumbHandler); 55 thumb.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,thumbHandler); 55 56 Draw.clear(display.media); 56 57 display.addChildAt(thumb,display.getChildIndex(display.media)+1); … … 139 140 var wid:Number = sploader.getPlugin('display').config['width']; 140 141 var hei:Number = sploader.getPlugin('display').config['height']; 141 Stretcher.stretch(display.media,wid,hei,config['stretching']); 142 if(item && item['type'] == 'youtube') { 143 display.media.x = 0; 144 display.media.y = 0; 145 models[item['type']].resize(wid,hei); 146 } else { 147 Stretcher.stretch(display.media,wid,hei,config['stretching']); 148 } 142 149 if(thumb.width > 10) { 143 150 Stretcher.stretch(thumb,wid,hei,config['stretching']); -
trunk/as3/com/jeroenwijering/player/SPLoader.as
r168 r169 50 50 // hack for the playlist/controlbar flashvars 51 51 var cbr:DisplayObject = skin.getChildByName('controlbar'); 52 skin.setChildIndex(cbr,skin.numChildren-1);53 52 if(nam == 'controlbar') { 54 53 obj['position'] = config['controlbar']; … … 79 78 clp = new MovieClip(); 80 79 clp.name = nam; 81 skin.addChildAt(clp, skin.numChildren-2);80 skin.addChildAt(clp,1); 82 81 } 83 82 // add plugin and initialize -
trunk/as3/com/jeroenwijering/plugins/Captions.as
r165 r169 24 24 /** List with configuration settings. **/ 25 25 public var config:Object = { 26 back: false,26 back:true, 27 27 file:undefined, 28 size:14,29 hide:false28 fontsize:14, 29 state:true 30 30 }; 31 31 /** Displayelement to load the captions into. **/ … … 55 55 /** Clicking the hide button. **/ 56 56 private function clickHandler(evt:MouseEvent):void { 57 hide(!config['hide']); 57 hide(!config['state']); 58 view.saveCookie('captions.state',config['state']); 58 59 }; 59 60 … … 98 99 private function drawClip() { 99 100 var rct:MovieClip = new MovieClip(); 100 rct.graphics.beginFill(0x000000,0. 5);101 rct.graphics.beginFill(0x000000,0.6); 101 102 rct.graphics.drawRect(0,0,400,60); 102 103 format = new TextFormat(); 103 104 format.color = 0xFFFFFF; 104 format.size = config[' size'];105 format.size = config['fontsize']; 105 106 format.align = "center"; 106 107 format.font = "_sans"; … … 126 127 /** Show/hide the captions **/ 127 128 public function hide(stt:Boolean):void { 128 config['hide'] = stt; 129 view.saveCookie('captions.hide',config['hide']); 130 clip.visible = config['hide']; 131 if(config['hide']) { 129 config['state'] = stt; 130 clip.visible = config['state']; 131 if(config['state']) { 132 132 icon.alpha = 1; 133 133 } else { … … 143 143 view.addControllerListener(ControllerEvent.RESIZE,resizeHandler); 144 144 view.addModelListener(ModelEvent.TIME,timeHandler); 145 view.addModelListener(ModelEvent.STATE,stateHandler); 145 146 drawButton(); 146 147 drawClip(); 147 hide(config['hide']); 148 clip.mouseEnabled = false; 149 clip.mouseChildren = false; 150 hide(config['state']); 148 151 }; 149 152 … … 152 155 private function itemHandler(evt:ControllerEvent=null):void { 153 156 current = 0; 154 var fil:String = view.playlist[view.config['item']]['captions .file'];155 if(fil) { 156 config['file'] = fil; 157 var fil:String = view.playlist[view.config['item']]['captions']; 158 if(fil) { 159 config['file'] = fil; 157 160 } else if (view.config['captions']) { 158 161 config['file'] = view.config['captions']; … … 185 188 clip.width = view.config['width']; 186 189 clip.scaleY = clip.scaleX; 187 if(!config['back']) { 190 if(!config['back']) { 188 191 field.y = 50 - field.height; 189 192 } … … 206 209 207 210 /** Check timing of the player to sync captions. **/ 211 private function stateHandler(evt:ModelEvent):void { 212 if(view.config['state'] == ModelStates.PLAYING && config['state']) { 213 clip.visible = true; 214 } else { 215 clip.visible = false; 216 } 217 }; 218 219 220 /** Check timing of the player to sync captions. **/ 208 221 private function timeHandler(evt:ModelEvent):void { 209 222 var pos:Number = evt.data.position; … … 214 227 215 228 229 216 230 }; 217 231 -
trunk/as3/com/jeroenwijering/plugins/Controlbar.as
r162 r169 172 172 private function itemHandler(evt:ControllerEvent=null):void { 173 173 try { 174 if(view.playlist && view.playlist.length > 1 && view.config['playlist'] == 'none') { 174 if(view.playlist && view.playlist.length > 1 && 175 (view.config['playlist'] == 'none' || view.config['playlist'] == 'over')) { 175 176 clip.prevButton.visible = clip.nextButton.visible = true; 176 177 } else { … … 290 291 clip.fullscreenButton.visible = false; 291 292 clip.normalscreenButton.visible = false; 292 if(clip.stage['displayState'] ) {293 if(clip.stage['displayState'] && view.config['height'] > 40) { 293 294 if(view.config['fullscreen']) { 294 295 clip.fullscreenButton.visible = false; -
trunk/as3/com/jeroenwijering/plugins/Display.as
r161 r169 138 138 loader = new Loader(); 139 139 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,logoHandler); 140 loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,logoHandler); 140 141 clip.logo.addChild(loader); 141 142 loader.load(new URLRequest(view.config['logo'])); -
trunk/as3/com/jeroenwijering/plugins/Playlist.as
r168 r169 7 7 import com.jeroenwijering.events.*; 8 8 import com.jeroenwijering.utils.*; 9 9 10 import flash.display.*; 10 import flash.events.Event; 11 import flash.events.MouseEvent; 11 import flash.events.*; 12 12 import flash.geom.ColorTransform; 13 13 import flash.geom.Rectangle; … … 305 305 img.addChild(ldr); 306 306 ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderHandler); 307 ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loaderHandler); 307 308 if(view.playlist[idx]['playlist.image']) { 308 309 ldr.load(new URLRequest(view.playlist[idx]['playlist.image'])); -
trunk/as3/readme.html
r166 r169 26 26 <script type="text/javascript" src="swfobject.js"></script> 27 27 <script type="text/javascript"> 28 swfobject.registerObject("player", "9.0.0","expressInstall.swf");28 swfobject.registerObject("player","9.0.98","expressInstall.swf"); 29 29 </script> 30 30 … … 33 33 <param name="allowfullscreen" value="true" /> 34 34 <param name="allowscriptaccess" value="always" /> 35 <param name="flashvars" value="file=video.flv&image=preview.jpg &tracecall=console.log" />35 <param name="flashvars" value="file=video.flv&image=preview.jpg" /> 36 36 <object type="application/x-shockwave-flash" data="player.swf" width="328" height="200"> 37 37 <param name="movie" value="player.swf" /> 38 38 <param name="allowfullscreen" value="true" /> 39 39 <param name="allowscriptaccess" value="always" /> 40 <param name="flashvars" value="file=video.flv&image=preview.jpg &tracecall=console.log" />40 <param name="flashvars" value="file=video.flv&image=preview.jpg" /> 41 41 <p><a href="http://get.adobe.com/flashplayer">Get Flash</a> to see this player.</p> 42 42 </object>
Note: See TracChangeset
for help on using the changeset viewer.
