STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
231344
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2623 · P5245

<div style="position:absolute;top:-99px;left:-99px;"><img src="https://tools.swfchan.com/stathit.asp?noj=FRM67074784-5DC&rnd=67074784" width="1" height="1"></div>

flvplayer.swf

This is the info page for
Flash #261617

(Click the ID number above for more basic data on this flash file.)


Text
<p align="left"></p>

00:00

00:00

ActionScript [AS3]

Section 1
//AbstractView (com.jeroenwijering.events.AbstractView) package com.jeroenwijering.events { import flash.display.*; import flash.events.*; public class AbstractView extends EventDispatcher { public function get config():Object{ return (new Object()); } public function getPluginConfig(_arg1:Object):Object{ return ({}); } public function get playlist():Array{ return (new Array()); } public function removeControllerListener(_arg1:String, _arg2:Function):void{ } public function removeModelListener(_arg1:String, _arg2:Function):void{ } public function addModelListener(_arg1:String, _arg2:Function):void{ } public function removeViewListener(_arg1:String, _arg2:Function):void{ } public function getPlugin(_arg1:String):Object{ return ({}); } public function addControllerListener(_arg1:String, _arg2:Function):void{ } public function sendEvent(_arg1:String, _arg2:Object=undefined):void{ } public function loadPlugin(_arg1:String, _arg2:String=null):Boolean{ return (true); } public function addViewListener(_arg1:String, _arg2:Function):void{ } public function get skin():MovieClip{ return (new MovieClip()); } } }//package com.jeroenwijering.events
Section 2
//ControllerEvent (com.jeroenwijering.events.ControllerEvent) package com.jeroenwijering.events { import flash.events.*; public class ControllerEvent extends Event { private var _data:Object; public static var PLAYLIST:String = "PLAYLIST"; public static var ERROR:String = "ERROR"; public static var STOP:String = "STOP"; public static var ITEM:String = "ITEM"; public static var PLAY:String = "PLAY"; public static var SEEK:String = "SEEK"; public static var MUTE:String = "MUTE"; public static var VOLUME:String = "VOLUME"; public static var RESIZE:String = "RESIZE"; public function ControllerEvent(_arg1:String, _arg2:Object=undefined, _arg3:Boolean=false, _arg4:Boolean=false):void{ super(_arg1, _arg3, _arg4); _data = _arg2; } public function get data():Object{ return (_data); } } }//package com.jeroenwijering.events
Section 3
//ModelEvent (com.jeroenwijering.events.ModelEvent) package com.jeroenwijering.events { import flash.events.*; public class ModelEvent extends Event { private var _data:Object; public static var BUFFER:String = "BUFFER"; public static var LOADED:String = "LOADED"; public static var ERROR:String = "ERROR"; public static var META:String = "META"; public static var TIME:String = "TIME"; public static var STATE:String = "STATE"; public function ModelEvent(_arg1:String, _arg2:Object=undefined, _arg3:Boolean=false, _arg4:Boolean=false):void{ super(_arg1, _arg3, _arg4); _data = _arg2; } public function get data():Object{ return (_data); } } }//package com.jeroenwijering.events
Section 4
//ModelStates (com.jeroenwijering.events.ModelStates) package com.jeroenwijering.events { public class ModelStates { public static var BUFFERING:String = "BUFFERING"; public static var PAUSED:String = "PAUSED"; public static var COMPLETED:String = "COMPLETED"; public static var IDLE:String = "IDLE"; public static var PLAYING:String = "PLAYING"; } }//package com.jeroenwijering.events
Section 5
//PlayerEvent (com.jeroenwijering.events.PlayerEvent) package com.jeroenwijering.events { import flash.events.*; public class PlayerEvent extends Event { public static var READY:String = "READY"; public function PlayerEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false):void{ super(_arg1, _arg2, _arg3); } } }//package com.jeroenwijering.events
Section 6
//PluginInterface (com.jeroenwijering.events.PluginInterface) package com.jeroenwijering.events { public interface PluginInterface { function initializePlugin(_arg1:AbstractView):void; } }//package com.jeroenwijering.events
Section 7
//SPLoaderEvent (com.jeroenwijering.events.SPLoaderEvent) package com.jeroenwijering.events { import flash.events.*; public class SPLoaderEvent extends Event { public static var PLUGINS:String = "PLUGINS"; public static var SKIN:String = "SKIN"; public function SPLoaderEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false):void{ super(_arg1, _arg2, _arg3); } } }//package com.jeroenwijering.events
Section 8
//ViewEvent (com.jeroenwijering.events.ViewEvent) package com.jeroenwijering.events { import flash.events.*; public class ViewEvent extends Event { private var _data:Object; public static var STOP:String = "STOP"; public static var NEXT:String = "NEXT"; public static var ITEM:String = "ITEM"; public static var MUTE:String = "MUTE"; public static var VOLUME:String = "VOLUME"; public static var FULLSCREEN:String = "FULLSCREEN"; public static var TRACE:String = "TRACE"; public static var LOAD:String = "LOAD"; public static var PREV:String = "PREV"; public static var PLAY:String = "PLAY"; public static var REDRAW:String = "REDRAW"; public static var SEEK:String = "SEEK"; public static var LINK:String = "LINK"; public function ViewEvent(_arg1:String, _arg2:Object=undefined, _arg3:Boolean=false, _arg4:Boolean=false):void{ super(_arg1, _arg3, _arg4); _data = _arg2; } public function get data():Object{ return (_data); } } }//package com.jeroenwijering.events
Section 9
//AbstractModel (com.jeroenwijering.models.AbstractModel) package com.jeroenwijering.models { import com.jeroenwijering.player.*; public class AbstractModel { protected var position:Number; protected var model:Model; protected var item:Object; public function AbstractModel(_arg1:Model):void{ model = _arg1; } public function stop():void{ } public function load(_arg1:Object):void{ item = _arg1; position = 0; } public function play():void{ } public function pause():void{ } public function seek(_arg1:Number):void{ position = _arg1; } public function volume(_arg1:Number):void{ } } }//package com.jeroenwijering.models
Section 10
//BitgravityModel (com.jeroenwijering.models.BitgravityModel) package com.jeroenwijering.models { import com.jeroenwijering.player.*; public class BitgravityModel extends HTTPModel { public function BitgravityModel(_arg1:Model):void{ super(_arg1); } override protected function getURL():String{ var _local1:String; _local1 = item["file"]; if (timeoffset > 0){ if (_local1.indexOf("?") > 0){ _local1 = (_local1 + ("&starttime=" + timeoffset)); } else { _local1 = (_local1 + ("?starttime=" + timeoffset)); }; }; return (_local1); } } }//package com.jeroenwijering.models
Section 11
//CameraModel (com.jeroenwijering.models.CameraModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.media.*; import flash.utils.*; public class CameraModel extends AbstractModel { protected var stream:NetStream; private var interval:Number; protected var connection:NetConnection; private var camera:Camera; private var microphone:Microphone; private var video:Video; public function CameraModel(_arg1:Model):void{ var mod = _arg1; super(mod); try { camera = Camera.getCamera(); camera.setMode(320, 240, 10); microphone = Microphone.getMicrophone(); video = new Video(320, 240); video.smoothing = model.config["smoothing"]; } catch(err:Error) { }; } override public function stop():void{ video.attachCamera(null); if (item["streamer"]){ stream.close(); connection.close(); }; clearInterval(interval); position = 0; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } protected function positionInterval():void{ position = (Math.round(((position * 10) + 1)) / 10); if (position < item["duration"]){ model.sendEvent(ModelEvent.TIME, {position:position, duration:item["duration"]}); } else { if ((((item["duration"] > 0)) && (model.config["respectduration"]))){ pause(); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; }; } override public function load(_arg1:Object):void{ item = _arg1; position = 0; if (camera){ model.mediaHandler(video); model.sendEvent(ModelEvent.META, {framerate:10, height:320, width:240}); play(); if (item["streamer"]){ connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); connection.objectEncoding = ObjectEncoding.AMF0; connection.client = new NetClient(this); connection.connect(item["streamer"]); camera.setLoopback(true); }; } else { stop(); model.sendEvent(ModelEvent.ERROR, {message:"No webcam found on this computer."}); }; } override public function play():void{ video.attachCamera(camera); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); interval = setInterval(positionInterval, 100); } override public function pause():void{ video.attachCamera(null); clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); } override public function seek(_arg1:Number):void{ clearInterval(interval); position = _arg1; play(); } protected function statusHandler(_arg1:NetStatusEvent):void{ switch (_arg1.info.code){ case "NetConnection.Connect.Success": stream = new NetStream(connection); stream.client = new NetClient(this); stream.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); stream.attachCamera(camera); stream.publish(item["file"], "record"); break; }; model.sendEvent(ModelEvent.META, {info:_arg1.info.code}); } } }//package com.jeroenwijering.models
Section 12
//FCSubscribeModel (com.jeroenwijering.models.FCSubscribeModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import flash.utils.*; public class FCSubscribeModel extends RTMPModel { private var subscribe:Number; public function FCSubscribeModel(_arg1:Model):void{ super(_arg1); } private function doSubscribe(_arg1:String):void{ connection.call("FCSubscribe", null, _arg1); } override protected function statusHandler(_arg1:NetStatusEvent):void{ if (_arg1.info.code == "NetConnection.Connect.Success"){ model.sendEvent(ModelEvent.META, {info:_arg1.info.code}); subscribe = setInterval(doSubscribe, 3000, getID(item["file"])); } else { super.statusHandler(_arg1); }; } override public function onData(_arg1:Object):void{ if (_arg1.type == "fcsubscribe"){ if (_arg1.code == "NetStream.Play.StreamNotFound"){ model.sendEvent(ModelEvent.ERROR, {message:("Subscription failed: " + item["file"])}); } else { if (_arg1.code == "NetStream.Play.Start"){ setStream(); }; }; clearInterval(subscribe); }; super.onData(_arg1); } } }//package com.jeroenwijering.models
Section 13
//FLVSeekModel (com.jeroenwijering.models.FLVSeekModel) package com.jeroenwijering.models { import com.jeroenwijering.player.*; public class FLVSeekModel extends HTTPModel { public function FLVSeekModel(_arg1:Model):void{ super(_arg1); } override protected function getURL():String{ var _local1:String; _local1 = item["file"]; if (_local1.indexOf("?") > -1){ _local1 = (_local1 + ("&fs=" + byteoffset)); } else { _local1 = (_local1 + ("?fs=" + byteoffset)); }; return (_local1); } } }//package com.jeroenwijering.models
Section 14
//HighwindsModel (com.jeroenwijering.models.HighwindsModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import flash.net.*; public class HighwindsModel extends RTMPModel { private var smil:String; private var loader:URLLoader; public function HighwindsModel(_arg1:Model):void{ super(_arg1); loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, loaderHandler); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } override public function stop():void{ super.stop(); if (smil){ item["file"] = smil; }; } override public function load(_arg1:Object):void{ item = _arg1; position = item["start"]; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); model.sendEvent(ModelEvent.BUFFER, {percentage:0}); smil = item["file"]; loader.load(new URLRequest(smil)); } private function loaderHandler(_arg1:Event){ var _local2:XML; _local2 = XML(_arg1.currentTarget.data); item["streamer"] = _local2.children()[0].children()[0].@base.toString(); item["file"] = _local2.children()[1].children()[0].@src.toString(); model.mediaHandler(video); connection.connect(item["streamer"]); } } }//package com.jeroenwijering.models
Section 15
//HTTPModel (com.jeroenwijering.models.HTTPModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.media.*; import flash.utils.*; public class HTTPModel extends AbstractModel { protected var stream:NetStream; protected var meta:Boolean; protected var byteoffset:Number; protected var loadtimer:Number; protected var timeoffset:Number; protected var loadinterval:Number; protected var interval:Number; protected var keyframes:Object; protected var connection:NetConnection; protected var transform:SoundTransform; protected var iterator:Number; protected var mp4:Boolean; protected var video:Video; public function HTTPModel(_arg1:Model):void{ super(_arg1); connection = new NetConnection(); connection.connect(null); stream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); stream.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler); stream.bufferTime = model.config["bufferlength"]; stream.checkPolicyFile = true; stream.client = new NetClient(this); video = new Video(320, 240); video.smoothing = model.config["smoothing"]; video.attachNetStream(stream); transform = new SoundTransform(); byteoffset = (timeoffset = 0); } override public function stop():void{ if ((stream.bytesLoaded + byteoffset) < stream.bytesTotal){ stream.close(); } else { stream.pause(); }; clearInterval(interval); clearInterval(loadinterval); byteoffset = (timeoffset = (position = 0)); keyframes = undefined; meta = false; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } protected function loadHandler():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = stream.bytesLoaded; _local2 = (stream.bytesTotal + byteoffset); _local3 = byteoffset; model.sendEvent(ModelEvent.LOADED, {loaded:_local1, total:_local2, offset:_local3}); if (((((_local1 + _local3) >= _local2)) && ((_local1 > 0)))){ clearInterval(loadinterval); }; if (!loadtimer){ loadtimer = setTimeout(loadTimeout, 3000); }; } protected function getOffset(_arg1:Number, _arg2:Boolean=false):Number{ var _local3:Number; if (!keyframes){ return (0); }; _local3 = 0; while (_local3 < (keyframes.times.length - 1)) { if ((((keyframes.times[_local3] <= _arg1)) && ((keyframes.times[(_local3 + 1)] >= _arg1)))){ break; }; _local3++; }; if (_arg2 == true){ return (keyframes.times[_local3]); }; return (keyframes.filepositions[_local3]); } protected function positionInterval():void{ var _local1:Number; iterator++; if (iterator > 10){ position = (Math.round((stream.time * 10)) / 10); if (mp4){ position = (position + timeoffset); }; }; _local1 = Math.round(((stream.bufferLength / stream.bufferTime) * 100)); if ((((_local1 < 95)) && ((position < Math.abs(((item["duration"] - stream.bufferTime) - 1)))))){ model.sendEvent(ModelEvent.BUFFER, {percentage:_local1}); if (((!((model.config["state"] == ModelStates.BUFFERING))) && ((_local1 < 25)))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); }; } else { if ((((_local1 > 95)) && (!((model.config["state"] == ModelStates.PLAYING))))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); }; }; if (position < item["duration"]){ model.sendEvent(ModelEvent.TIME, {position:position, duration:item["duration"]}); } else { if ((((item["duration"] > 0)) && (model.config["respectduration"]))){ pause(); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; }; } override public function volume(_arg1:Number):void{ transform.volume = (_arg1 / 100); stream.soundTransform = transform; } protected function errorHandler(_arg1:ErrorEvent):void{ stop(); model.sendEvent(ModelEvent.ERROR, {message:_arg1.text}); } protected function loadTimeout():void{ var _local1:Object; _local1 = new Object(); _local1["bandwidth"] = Math.round((((stream.bytesLoaded / 0x0400) / 3) * 8)); if (item["duration"]){ _local1["bitrate"] = Math.round((((stream.bytesTotal / 0x0400) * 8) / item["duration"])); }; model.sendEvent("META", _local1); } public function onData(_arg1:Object):void{ if (_arg1.width){ video.width = _arg1.width; video.height = _arg1.height; }; if ((((_arg1["type"] == "metadata")) && (!(meta)))){ meta = true; if (_arg1.seekpoints){ mp4 = true; keyframes = convertSeekpoints(_arg1.seekpoints); } else { mp4 = false; keyframes = _arg1.keyframes; }; if (item["start"] > 0){ seek(item["start"]); }; }; model.sendEvent(ModelEvent.META, _arg1); } override public function play():void{ stream.resume(); interval = setInterval(positionInterval, 100); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); } protected function getURL():String{ var _local1:String; var _local2:Number; _local1 = item["streamer"]; _local2 = byteoffset; if (mp4){ _local2 = timeoffset; }; if (_local1.indexOf("?") > -1){ _local1 = (_local1 + ((("&file=" + item["file"]) + "&start=") + _local2)); } else { _local1 = (_local1 + ((("?file=" + item["file"]) + "&start=") + _local2)); }; if (model.config["token"]){ _local1 = (_local1 + ("&token=" + model.config["token"])); }; return (_local1); } override public function load(_arg1:Object):void{ item = _arg1; position = timeoffset; if ((stream.bytesLoaded + byteoffset) < stream.bytesTotal){ stream.close(); }; model.mediaHandler(video); stream.play(getURL()); iterator = 0; clearInterval(interval); interval = setInterval(positionInterval, 100); clearInterval(loadinterval); loadinterval = setInterval(loadHandler, 200); if ((model.config["mute"] == true)){ volume(0); } else { volume(model.config["volume"]); }; model.sendEvent(ModelEvent.BUFFER, {percentage:0}); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); } protected function convertSeekpoints(_arg1:Object):Object{ var _local2:Object; var _local3:*; _local2 = new Object(); _local2.times = new Array(); _local2.filepositions = new Array(); for (_local3 in _arg1) { _local2.times[_local3] = Number(_arg1[_local3]["time"]); _local2.filepositions[_local3] = Number(_arg1[_local3]["offset"]); }; return (_local2); } override public function pause():void{ stream.pause(); clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); } override public function seek(_arg1:Number):void{ var _local2:Number; _local2 = getOffset(_arg1); clearInterval(interval); if ((((_local2 < byteoffset)) || ((_local2 >= (byteoffset + stream.bytesLoaded))))){ timeoffset = (position = getOffset(_arg1, true)); byteoffset = _local2; load(item); } else { position = _arg1; if (mp4){ stream.seek(getOffset((position - timeoffset), true)); } else { stream.seek(getOffset(position, true)); }; interval = setInterval(positionInterval, 100); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); }; } protected function statusHandler(_arg1:NetStatusEvent):void{ switch (_arg1.info.code){ case "NetStream.Play.Stop": if (model.config["state"] != ModelStates.COMPLETED){ clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; break; case "NetStream.Play.StreamNotFound": stop(); model.sendEvent(ModelEvent.ERROR, {message:("Video not found: " + item["file"])}); break; }; model.sendEvent(ModelEvent.META, {info:_arg1.info.code}); } } }//package com.jeroenwijering.models
Section 16
//ImageModel (com.jeroenwijering.models.ImageModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; import flash.system.*; public class ImageModel extends AbstractModel { private var interval:Number; private var loader:Loader; public function ImageModel(_arg1:Model):void{ super(_arg1); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderHandler); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } override public function stop():void{ if (loader.contentLoaderInfo.bytesLoaded != loader.contentLoaderInfo.bytesTotal){ loader.close(); } else { loader.unload(); }; clearInterval(interval); position = 0; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } override public function load(_arg1:Object):void{ item = _arg1; position = 0; loader.load(new URLRequest(item["file"]), new LoaderContext(true)); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); model.sendEvent(ModelEvent.BUFFER, {percentage:0}); } protected function positionInterval():void{ position = (Math.round(((position * 10) + 1)) / 10); if (position < item["duration"]){ model.sendEvent(ModelEvent.TIME, {position:position, duration:item["duration"]}); } else { if (item["duration"] > 0){ pause(); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; }; } private function errorHandler(_arg1:ErrorEvent):void{ stop(); model.sendEvent(ModelEvent.ERROR, {message:_arg1.text}); } override public function play():void{ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); interval = setInterval(positionInterval, 100); } override public function pause():void{ clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); } private function loaderHandler(_arg1:Event):void{ var evt = _arg1; model.mediaHandler(loader); try { Bitmap(loader.content).smoothing = true; } catch(err:Error) { }; model.sendEvent(ModelEvent.META, {height:evt.target.height, width:evt.target.width}); play(); } override public function seek(_arg1:Number):void{ clearInterval(interval); position = _arg1; play(); } private function progressHandler(_arg1:ProgressEvent):void{ var _local2:*; _local2 = Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100)); model.sendEvent(ModelEvent.BUFFER, {percentage:_local2}); } } }//package com.jeroenwijering.models
Section 17
//LighttpdModel (com.jeroenwijering.models.LighttpdModel) package com.jeroenwijering.models { import com.jeroenwijering.player.*; public class LighttpdModel extends HTTPModel { public function LighttpdModel(_arg1:Model):void{ super(_arg1); } override protected function getURL():String{ var _local1:String; var _local2:Number; _local1 = item["file"]; _local2 = byteoffset; if (mp4){ _local2 = timeoffset; }; if (_local1.indexOf("?") > -1){ _local1 = (_local1 + ("&start=" + _local2)); } else { _local1 = (_local1 + ("?start=" + _local2)); }; if (model.config["token"]){ _local1 = (_local1 + ("&token=" + model.config["token"])); }; _local1 = (_local1 + ("&id=" + model.config["id"])); _local1 = (_local1 + ("&client=" + encodeURI(model.config["client"]))); _local1 = (_local1 + ("&version=" + encodeURI(model.config["version"]))); _local1 = (_local1 + ("&width=" + model.config["width"])); return (_local1); } } }//package com.jeroenwijering.models
Section 18
//NginxModel (com.jeroenwijering.models.NginxModel) package com.jeroenwijering.models { import com.jeroenwijering.player.*; public class NginxModel extends HTTPModel { public function NginxModel(_arg1:Model):void{ super(_arg1); } override protected function getURL():String{ var _local1:String; var _local2:Number; _local1 = item["file"]; _local2 = byteoffset; if (mp4){ _local2 = timeoffset; }; if (_local1.indexOf("?") > -1){ _local1 = (_local1 + ("&start=" + _local2)); } else { _local1 = (_local1 + ("?start=" + _local2)); }; return (_local1); } } }//package com.jeroenwijering.models
Section 19
//RTMPModel (com.jeroenwijering.models.RTMPModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.media.*; import flash.utils.*; public class RTMPModel extends AbstractModel { protected var stream:NetStream; protected var interval:Number; protected var started:Boolean; protected var connection:NetConnection; protected var transform:SoundTransform; protected var video:Video; public function RTMPModel(_arg1:Model):void{ super(_arg1); connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); connection.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler); connection.objectEncoding = ObjectEncoding.AMF0; connection.client = new NetClient(this); video = new Video(320, 240); video.smoothing = model.config["smoothing"]; transform = new SoundTransform(); } override public function stop():void{ if (stream){ stream.close(); }; connection.close(); started = false; clearInterval(interval); position = 0; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } private function streamlengthHandler(_arg1:Number):void{ if (_arg1 > 0){ onData({type:"streamlength", duration:_arg1}); }; } public function onData(_arg1:Object):void{ if (_arg1.width){ video.width = _arg1.width; video.height = _arg1.height; }; if (_arg1.type == "complete"){ clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); } else { if (_arg1.type == "close"){ stop(); }; }; if (model.config["ignoremeta"] != true){ model.sendEvent(ModelEvent.META, _arg1); }; } protected function setStream(){ stream = new NetStream(connection); stream.checkPolicyFile = true; stream.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); stream.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler); stream.bufferTime = model.config["bufferlength"]; stream.client = new NetClient(this); video.attachNetStream(stream); if ((model.config["mute"] == true)){ volume(0); } else { volume(model.config["volume"]); }; interval = setInterval(positionInterval, 100); stream.play(getID(item["file"])); } protected function positionInterval():void{ var _local1:Number; position = (Math.round((stream.time * 10)) / 10); _local1 = Math.round(((stream.bufferLength / stream.bufferTime) * 100)); if ((((_local1 < 95)) && ((position < Math.abs(((item["duration"] - stream.bufferTime) - 1)))))){ model.sendEvent(ModelEvent.BUFFER, {percentage:_local1}); if (((!((model.config["state"] == ModelStates.BUFFERING))) && ((_local1 < 25)))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); }; } else { if ((((_local1 > 95)) && (!((model.config["state"] == ModelStates.PLAYING))))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); }; }; if (position < item["duration"]){ model.sendEvent(ModelEvent.TIME, {position:position, duration:item["duration"]}); } else { if ((((item["duration"] > 0)) && (model.config["respectduration"]))){ pause(); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; }; } override public function volume(_arg1:Number):void{ transform.volume = (_arg1 / 100); if (stream){ stream.soundTransform = transform; }; } protected function errorHandler(_arg1:ErrorEvent):void{ stop(); model.sendEvent(ModelEvent.ERROR, {message:_arg1.text}); } override public function load(_arg1:Object):void{ item = _arg1; position = 0; model.mediaHandler(video); connection.connect(item["streamer"]); model.sendEvent(ModelEvent.BUFFER, {percentage:0}); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); } protected function getID(_arg1:String):String{ var _local2:String; _local2 = _arg1.substr(-4); if (_local2 == ".mp3"){ return (("mp3:" + _arg1.substr(0, (_arg1.length - 4)))); }; if ((((((((_local2 == ".mp4")) || ((_local2 == ".mov")))) || ((_local2 == ".aac")))) || ((_local2 == ".m4a")))){ return (("mp4:" + _arg1)); }; if (_local2 == ".flv"){ return (_arg1.substr(0, (_arg1.length - 4))); }; return (_arg1); } override public function play():void{ stream.resume(); interval = setInterval(positionInterval, 100); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); } override public function pause():void{ stream.pause(); clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); if (((started) && ((item["duration"] == 0)))){ stop(); }; } override public function seek(_arg1:Number):void{ position = _arg1; clearInterval(interval); if (model.config["state"] == ModelStates.PAUSED){ stream.resume(); }; interval = setInterval(positionInterval, 100); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); stream.seek(position); } protected function statusHandler(_arg1:NetStatusEvent):void{ var _local2:Responder; switch (_arg1.info.code){ case "NetConnection.Connect.Success": if (_arg1.info.secureToken != undefined){ connection.call("secureTokenResponse", null, TEA.decrypt(_arg1.info.secureToken, model.config["token"])); }; setStream(); _local2 = new Responder(streamlengthHandler); connection.call("getStreamLength", _local2, getID(item["file"])); connection.call("checkBandwidth", null); break; case "NetStream.Play.Start": if ((((item["start"] > 0)) && (!(started)))){ seek(item["start"]); }; started = true; break; case "NetStream.Seek.Notify": clearInterval(interval); interval = setInterval(positionInterval, 100); break; case "NetConnection.Connect.Rejected": if (_arg1.info.ex.code == 302){ item["streamer"] = _arg1.info.ex.redirect; connection.connect(item["streamer"]); }; break; case "NetStream.Failed": case "NetStream.Play.StreamNotFound": stop(); model.sendEvent(ModelEvent.ERROR, {message:("Stream not found: " + item["file"])}); break; case "NetConnection.Connect.Failed": stop(); model.sendEvent(ModelEvent.ERROR, {message:("Server not found: " + item["streamer"])}); break; }; model.sendEvent(ModelEvent.META, {info:_arg1.info.code}); } } }//package com.jeroenwijering.models
Section 20
//SoundModel (com.jeroenwijering.models.SoundModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import flash.net.*; import flash.media.*; import flash.utils.*; public class SoundModel extends AbstractModel { private var channel:SoundChannel; protected var interval:Number; private var sound:Sound; private var loadinterval; private var transform:SoundTransform; private var context:SoundLoaderContext; public function SoundModel(_arg1:Model):void{ super(_arg1); transform = new SoundTransform(); context = new SoundLoaderContext((model.config["bufferlength"] * 1000), true); } override public function stop():void{ if (channel){ channel.stop(); }; try { sound.close(); } catch(err:Error) { }; clearInterval(loadinterval); clearInterval(interval); position = 0; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } private function loadHandler():void{ var _local1:*; var _local2:*; _local1 = sound.bytesLoaded; _local2 = sound.bytesTotal; model.sendEvent(ModelEvent.LOADED, {loaded:_local1, total:_local2}); if (((((_local1 / _local2) > 0.1)) && ((item["duration"] == 0)))){ model.sendEvent(ModelEvent.META, {duration:(((sound.length / 1000) / _local1) * _local2)}); }; if ((((_local1 == _local2)) && ((_local1 > 0)))){ clearInterval(loadinterval); }; } protected function positionInterval():void{ var _local1:Number; position = (Math.round((channel.position / 100)) / 10); if ((((sound.isBuffering == true)) && ((sound.bytesTotal > sound.bytesLoaded)))){ if (model.config["state"] != ModelStates.BUFFERING){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); } else { _local1 = Math.floor(((sound.length / (channel.position + (model.config["bufferlength"] * 1000))) * 100)); model.sendEvent(ModelEvent.BUFFER, {percentage:_local1}); }; } else { if ((((model.config["state"] == ModelStates.BUFFERING)) && ((sound.isBuffering == false)))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); }; }; if (position < item["duration"]){ model.sendEvent(ModelEvent.TIME, {position:position, duration:item["duration"]}); } else { if ((((item["duration"] > 0)) && (model.config["respectduration"]))){ pause(); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; }; } private function completeHandler(_arg1:Event):void{ clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); } override public function volume(_arg1:Number):void{ transform.volume = (_arg1 / 100); if (channel){ channel.soundTransform = transform; }; } private function errorHandler(_arg1:ErrorEvent):void{ stop(); model.sendEvent(ModelEvent.ERROR, {message:_arg1.text}); } override public function load(_arg1:Object):void{ item = _arg1; position = 0; sound = new Sound(); sound.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); sound.addEventListener(Event.ID3, id3Handler); sound.load(new URLRequest(item["file"]), context); play(); if (item["start"] > 0){ seek(item["start"]); }; loadinterval = setInterval(loadHandler, 200); if ((model.config["mute"] == true)){ volume(0); } else { volume(model.config["volume"]); }; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); model.sendEvent(ModelEvent.BUFFER, {percentage:0}); } private function id3Handler(_arg1:Event):void{ var id3:ID3Info; var obj:Object; var evt = _arg1; try { id3 = sound.id3; obj = {type:"id3", album:id3.album, artist:id3.artist, comment:id3.comment, genre:id3.genre, name:id3.songName, track:id3.track, year:id3.year}; model.sendEvent(ModelEvent.META, obj); } catch(err:Error) { }; } override public function play():void{ channel = sound.play((position * 1000), 0, transform); channel.addEventListener(Event.SOUND_COMPLETE, completeHandler); interval = setInterval(positionInterval, 100); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); } override public function pause():void{ channel.stop(); clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); } override public function seek(_arg1:Number):void{ position = _arg1; clearInterval(interval); channel.stop(); play(); } } }//package com.jeroenwijering.models
Section 21
//VideoModel (com.jeroenwijering.models.VideoModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.media.*; import flash.utils.*; public class VideoModel extends AbstractModel { protected var stream:NetStream; protected var interval:Number; protected var connection:NetConnection; protected var loadtimer:Number; protected var loadinterval:Number; protected var transform:SoundTransform; protected var video:Video; public function VideoModel(_arg1:Model):void{ super(_arg1); connection = new NetConnection(); connection.connect(null); stream = new NetStream(connection); stream.checkPolicyFile = true; stream.addEventListener(NetStatusEvent.NET_STATUS, statusHandler); stream.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, errorHandler); stream.bufferTime = model.config["bufferlength"]; stream.client = new NetClient(this); video = new Video(320, 240); video.smoothing = model.config["smoothing"]; video.attachNetStream(stream); transform = new SoundTransform(); } override public function stop():void{ if (stream.bytesLoaded < stream.bytesTotal){ stream.close(); } else { stream.pause(); }; loadtimer = undefined; clearInterval(loadinterval); clearInterval(interval); position = 0; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } protected function loadHandler():void{ var _local1:Number; var _local2:Number; _local1 = stream.bytesLoaded; _local2 = stream.bytesTotal; model.sendEvent(ModelEvent.LOADED, {loaded:_local1, total:_local2}); if ((((_local1 == _local2)) && ((_local1 > 0)))){ clearInterval(loadinterval); }; if (!loadtimer){ loadtimer = setTimeout(loadTimeout, 3000); }; } public function onData(_arg1:Object):void{ if (_arg1.width){ video.width = _arg1.width; video.height = _arg1.height; }; model.sendEvent(ModelEvent.META, _arg1); } protected function positionInterval():void{ var _local1:Number; position = (Math.round((stream.time * 10)) / 10); _local1 = Math.round(((stream.bufferLength / stream.bufferTime) * 100)); if ((((_local1 < 95)) && ((position < Math.abs(((item["duration"] - stream.bufferTime) - 1)))))){ model.sendEvent(ModelEvent.BUFFER, {percentage:_local1}); if (((!((model.config["state"] == ModelStates.BUFFERING))) && ((_local1 < 25)))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); }; } else { if ((((_local1 > 95)) && (!((model.config["state"] == ModelStates.PLAYING))))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); }; }; if (position < item["duration"]){ model.sendEvent(ModelEvent.TIME, {position:position, duration:item["duration"]}); } else { if ((((item["duration"] > 0)) && (model.config["respectduration"]))){ pause(); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; }; } override public function volume(_arg1:Number):void{ transform.volume = (_arg1 / 100); stream.soundTransform = transform; } protected function loadTimeout():void{ var _local1:Object; _local1 = new Object(); _local1["bandwidth"] = Math.round((((stream.bytesLoaded / 0x0400) / 3) * 8)); if (item["duration"]){ _local1["bitrate"] = Math.round((((stream.bytesTotal / 0x0400) * 8) / item["duration"])); }; model.sendEvent("META", _local1); } protected function errorHandler(_arg1:ErrorEvent):void{ stop(); model.sendEvent(ModelEvent.ERROR, {message:_arg1.text}); } override public function load(_arg1:Object):void{ item = _arg1; position = 0; model.mediaHandler(video); stream.play(item["file"]); interval = setInterval(positionInterval, 100); loadinterval = setInterval(loadHandler, 200); if ((model.config["mute"] == true)){ volume(0); } else { volume(model.config["volume"]); }; model.sendEvent(ModelEvent.BUFFER, {percentage:0}); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); } override public function play():void{ stream.resume(); interval = setInterval(positionInterval, 100); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); } override public function pause():void{ stream.pause(); clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); } override public function seek(_arg1:Number):void{ position = _arg1; clearInterval(interval); stream.seek(position); play(); } protected function statusHandler(_arg1:NetStatusEvent):void{ switch (_arg1.info.code){ case "NetStream.Play.Stop": clearInterval(interval); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); break; case "NetStream.Play.StreamNotFound": stop(); model.sendEvent(ModelEvent.ERROR, {message:("Video not found: " + item["file"])}); break; default: model.sendEvent(ModelEvent.META, {info:_arg1.info.code}); break; }; } } }//package com.jeroenwijering.models
Section 22
//YoutubeModel (com.jeroenwijering.models.YoutubeModel) package com.jeroenwijering.models { import com.jeroenwijering.events.*; import com.jeroenwijering.player.*; import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public class YoutubeModel extends AbstractModel { private var location:String; private var connected:Boolean; private var unique:String; private var loader:Loader; private var metasent:Boolean; private var outgoing:LocalConnection; private var inbound:LocalConnection; private var loading:Boolean; public function YoutubeModel(_arg1:Model):void{ var _local2:String; var _local3:String; super(_arg1); Security.allowDomain("*"); _local2 = model.display.loaderInfo.url; if (_local2.indexOf("http://") == 0){ unique = Math.random().toString().substr(2); _local3 = _local2.substr(0, _local2.indexOf(".swf")); location = ((_local3.substr(0, (_local3.lastIndexOf("/") + 1)) + "yt.swf?unique=") + unique); } else { unique = "1"; location = "yt.swf"; }; outgoing = new LocalConnection(); outgoing.allowDomain("*"); outgoing.allowInsecureDomain("*"); outgoing.addEventListener(StatusEvent.STATUS, onLocalConnectionStatusChange); inbound = new LocalConnection(); inbound.allowDomain("*"); inbound.allowInsecureDomain("*"); inbound.addEventListener(StatusEvent.STATUS, onLocalConnectionStatusChange); inbound.client = this; loader = new Loader(); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function getID(_arg1:String):String{ var _local2:*; var _local3:*; var _local4:*; _local2 = _arg1.split("?"); _local3 = ""; for (_local4 in _local2) { if (_local2[_local4].substr(0, 2) == "v="){ _local3 = _local2[_local4].substr(2); }; }; if (_local3 == ""){ _local3 = _arg1.substr((_arg1.indexOf("/v/") + 3)); }; if (_local3.indexOf("&") > -1){ _local3 = _local3.substr(0, _local3.indexOf("&")); }; return (_local3); } override public function stop():void{ metasent = false; outgoing.send(("AS3_" + unique), "stopVideo"); position = 0; model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.IDLE}); } public function resize(_arg1:Number, _arg2:Number){ outgoing.send(("AS3_" + unique), "setSize", _arg1, _arg2); } public function onError(_arg1:String):void{ model.sendEvent(ModelEvent.ERROR, {message:("YouTube error (video not found?):\n" + item["file"])}); stop(); } public function onLoadChange(_arg1:Number, _arg2:Number, _arg3:Number):void{ model.sendEvent(ModelEvent.LOADED, {loaded:_arg1, total:_arg2, offset:_arg3}); } private function errorHandler(_arg1:ErrorEvent):void{ stop(); model.sendEvent(ModelEvent.ERROR, {message:_arg1.text}); } public function onTimeChange(_arg1:Number, _arg2:Number):void{ model.sendEvent(ModelEvent.TIME, {position:_arg1, duration:_arg2}); if (!metasent){ model.sendEvent(ModelEvent.META, {width:320, height:240, duration:_arg2}); metasent = true; }; } override public function volume(_arg1:Number):void{ outgoing.send(("AS3_" + unique), "setVolume", _arg1); } public function onSwfLoadComplete():void{ if ((model.config["mute"] == true)){ volume(0); } else { volume(model.config["volume"]); }; connected = true; if (loading){ load(item); }; } override public function load(_arg1:Object):void{ var _local2:*; item = _arg1; position = 0; loading = true; if (connected){ if (outgoing){ _local2 = getID(item["file"]); resize(model.config["width"], ((model.config["width"] / 4) * 3)); outgoing.send(("AS3_" + unique), "loadVideoById", _local2, item["start"]); model.mediaHandler(loader); }; } else { inbound.connect(("AS2_" + unique)); loader.load(new URLRequest(location)); }; model.sendEvent(ModelEvent.BUFFER, {percentage:0}); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); } public function onStateChange(_arg1:Number):void{ switch (Number(_arg1)){ case -1: break; case 0: if (((!((model.config["state"] == ModelStates.BUFFERING))) && (!((model.config["state"] == ModelStates.IDLE))))){ model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.COMPLETED}); }; break; case 1: model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); break; case 2: model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); break; case 3: model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.BUFFERING}); model.sendEvent(ModelEvent.BUFFER, {percentage:0}); break; }; } override public function play():void{ outgoing.send(("AS3_" + unique), "playVideo"); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PLAYING}); } override public function pause():void{ outgoing.send(("AS3_" + unique), "pauseVideo"); model.sendEvent(ModelEvent.STATE, {newstate:ModelStates.PAUSED}); } override public function seek(_arg1:Number):void{ outgoing.send(("AS3_" + unique), "seekTo", _arg1); play(); } public function onLocalConnectionStatusChange(_arg1:StatusEvent):void{ } } }//package com.jeroenwijering.models
Section 23
//ASXParser (com.jeroenwijering.parsers.ASXParser) package com.jeroenwijering.parsers { import com.jeroenwijering.utils.*; public class ASXParser { public static function parse(_arg1:XML):Array{ var _local2:Array; var _local3:XML; _local2 = new Array(); for each (_local3 in _arg1.children()) { if (_local3.localName() == "entry"){ _local2.push(ASXParser.parseItem(_local3)); }; }; return (_local2); } public static function parseItem(_arg1:XML):Object{ var _local2:Object; var _local3:XML; _local2 = new Object(); for each (_local3 in _arg1.children()) { if (!_local3.localName()){ break; }; switch (_local3.localName().toLowerCase()){ case "ref": _local2["file"] = _local3.@href.toString(); break; case "title": _local2["title"] = _local3.text().toString(); break; case "moreinfo": _local2["link"] = _local3.@href.toString(); break; case "abstract": _local2["description"] = _local3.text().toString(); break; case "author": _local2["author"] = _local3.text().toString(); break; case "duration": _local2["duration"] = Strings.seconds(_local3.@value.toString()); break; case "starttime": _local2["start"] = Strings.seconds(_local3.@value.toString()); break; case "param": _local2[_local3.@name] = _local3.@value.toString(); break; }; }; _local2 = JWParser.parseEntry(_arg1, _local2); return (_local2); } } }//package com.jeroenwijering.parsers
Section 24
//ATOMParser (com.jeroenwijering.parsers.ATOMParser) package com.jeroenwijering.parsers { public class ATOMParser { public static function parse(_arg1:XML):Array{ var _local2:Array; var _local3:XML; _local2 = new Array(); for each (_local3 in _arg1.children()) { if (_local3.localName() == "entry"){ _local2.push(ATOMParser.parseItem(_local3)); }; }; return (_local2); } public static function parseItem(_arg1:XML):Object{ var _local2:*; var _local3:XML; _local2 = new Object(); for each (_local3 in _arg1.children()) { switch (_local3.localName().toLowerCase()){ case "author": _local2["author"] = _local3.children()[0].text().toString(); break; case "title": _local2["title"] = _local3.text().toString(); break; case "summary": _local2["description"] = _local3.text().toString(); break; case "link": if (_local3.@rel == "alternate"){ _local2["link"] = _local3.@href.toString(); } else { if (_local3.@rel == "enclosure"){ _local2["file"] = _local3.@href.toString(); }; }; break; case "published": _local2["date"] = _local3.text().toString(); break; }; }; _local2 = MediaParser.parseGroup(_arg1, _local2); _local2 = JWParser.parseEntry(_arg1, _local2); return (_local2); } } }//package com.jeroenwijering.parsers
Section 25
//ItunesParser (com.jeroenwijering.parsers.ItunesParser) package com.jeroenwijering.parsers { import com.jeroenwijering.utils.*; public class ItunesParser { private static var PREFIX = "itunes"; public static function parseEntry(_arg1:XML, _arg2:Object):Object{ var _local3:XML; for each (_local3 in _arg1.children()) { if (_local3.namespace().prefix == ItunesParser.PREFIX){ switch (_local3.localName().toLowerCase()){ case "author": _arg2["author"] = _local3.text().toString(); break; case "duration": _arg2["duration"] = Strings.seconds(_local3.text().toString()); break; case "summary": _arg2["description"] = _local3.text().toString(); break; case "keywords": _arg2["tags"] = _local3.text().toString(); break; }; }; }; return (_arg2); } } }//package com.jeroenwijering.parsers
Section 26
//JWParser (com.jeroenwijering.parsers.JWParser) package com.jeroenwijering.parsers { import com.jeroenwijering.utils.*; public class JWParser { private static var PREFIX = "jwplayer"; public static function parseEntry(_arg1:XML, _arg2:Object):Object{ var _local3:XML; for each (_local3 in _arg1.children()) { if (_local3.namespace().prefix == JWParser.PREFIX){ _arg2[_local3.localName()] = Strings.serialize(_local3.text().toString()); }; }; return (_arg2); } } }//package com.jeroenwijering.parsers
Section 27
//MediaParser (com.jeroenwijering.parsers.MediaParser) package com.jeroenwijering.parsers { import com.jeroenwijering.utils.*; public class MediaParser { private static var PREFIX = "media"; public static function parseGroup(_arg1:XML, _arg2:Object):Object{ var _local3:XML; var _local4:Boolean; for each (_local3 in _arg1.children()) { if (_local3.namespace().prefix == MediaParser.PREFIX){ switch (_local3.localName().toLowerCase()){ case "content": if (!_local4){ _arg2["file"] = _local3.@url.toString(); }; if (_local3.@duration){ _arg2["duration"] = Strings.seconds(_local3.@duration.toString()); }; if (_local3.@start){ _arg2["start"] = Strings.seconds(_local3.@start.toString()); }; if (_local3.children().length() > 0){ _arg2 = MediaParser.parseGroup(_local3, _arg2); }; break; case "title": _arg2["title"] = _local3.text().toString(); break; case "description": _arg2["description"] = _local3.text().toString(); break; case "keywords": _arg2["tags"] = _local3.text().toString(); break; case "thumbnail": _arg2["image"] = _local3.@url.toString(); break; case "credit": _arg2["author"] = _local3.text().toString(); break; case "player": if (_local3.@url.indexOf("youtube.com") > 0){ _local4 = true; _arg2["file"] = _local3.@url.toString(); }; break; case "group": _arg2 = MediaParser.parseGroup(_local3, _arg2); break; }; }; }; return (_arg2); } } }//package com.jeroenwijering.parsers
Section 28
//RSSParser (com.jeroenwijering.parsers.RSSParser) package com.jeroenwijering.parsers { public class RSSParser { public static function parse(_arg1:XML):Array{ var _local2:Array; var _local3:XML; var _local4:XML; _local2 = new Array(); for each (_local3 in _arg1.children()) { if (_local3.localName() == "channel"){ for each (_local4 in _local3.children()) { if (_local4.name() == "item"){ _local2.push(RSSParser.parseItem(_local4)); }; }; }; }; return (_local2); } public static function parseItem(_arg1:XML):Object{ var _local2:Object; var _local3:XML; _local2 = new Object(); for each (_local3 in _arg1.children()) { switch (_local3.localName().toLowerCase()){ case "enclosure": _local2["file"] = _local3.@url.toString(); break; case "title": _local2["title"] = _local3.text().toString(); break; case "pubDate": _local2["date"] = _local3.text().toString(); break; case "description": _local2["description"] = _local3.text().toString(); break; case "link": _local2["link"] = _local3.text().toString(); break; case "category": if (_local2["tags"]){ _local2["tags"] = (_local2["tags"] + _local3.text().toString()); } else { _local2["tags"] = _local3.text().toString(); }; break; }; }; _local2 = ItunesParser.parseEntry(_arg1, _local2); _local2 = MediaParser.parseGroup(_arg1, _local2); _local2 = JWParser.parseEntry(_arg1, _local2); return (_local2); } } }//package com.jeroenwijering.parsers
Section 29
//SMILParser (com.jeroenwijering.parsers.SMILParser) package com.jeroenwijering.parsers { import com.jeroenwijering.utils.*; public class SMILParser { public static function parseAttributes(_arg1:Object, _arg2:Object):Object{ var _local3:Number; var _local4:String; _local3 = 0; while (_local3 < _arg1.attributes().length()) { _local4 = _arg1.attributes()[_local3].name().toString(); switch (_local4){ case "begin": _arg2["start"] = Strings.seconds(_arg1.@begin.toString()); break; case "src": _arg2["file"] = _arg1.@src.toString(); break; case "dur": _arg2["duration"] = Strings.seconds(_arg1.@dur.toString()); break; case "alt": _arg2["description"] = _arg1.@alt.toString(); break; default: _arg2[_local4] = _arg1.attributes()[_local3].toString(); break; }; _local3++; }; return (_arg2); } public static function parse(_arg1:XML):Array{ var _local2:Array; var _local3:XML; var _local4:XML; _local2 = new Array(); _local3 = _arg1.children()[1].children()[0]; if (_local3.localName().toLowerCase() == "seq"){ for each (_local4 in _local3.children()) { _local2.push(SMILParser.parseSeq(_local4)); }; } else { _local2.push(SMILParser.parsePar(_local3)); }; return (_local2); } public static function parseSeq(_arg1:XML):Object{ var _local2:Object; _local2 = new Object(); switch (_arg1.localName().toLowerCase()){ case "par": _local2 = SMILParser.parsePar(_arg1); break; case "img": case "video": case "audio": _local2 = SMILParser.parseAttributes(_arg1, _local2); break; default: break; }; return (_local2); } public static function parsePar(_arg1:XML):Object{ var _local2:Object; var _local3:XML; _local2 = new Object(); for each (_local3 in _arg1.children()) { switch (_local3.localName().toLowerCase()){ case "anchor": _local2["link"] = _local3.@href.toString(); break; case "img": if (_local2["file"]){ _local2["image"] = _local3.@src.toString(); break; } else { _local2 = SMILParser.parseAttributes(_local3, _local2); }; break; case "video": case "audio": _local2 = SMILParser.parseAttributes(_local3, _local2); break; default: break; }; }; _local2 = JWParser.parseEntry(_arg1, _local2); return (_local2); } } }//package com.jeroenwijering.parsers
Section 30
//XSPFParser (com.jeroenwijering.parsers.XSPFParser) package com.jeroenwijering.parsers { import com.jeroenwijering.utils.*; public class XSPFParser { public static function parse(_arg1:XML):Array{ var _local2:Array; var _local3:XML; var _local4:XML; _local2 = new Array(); for each (_local3 in _arg1.children()) { if (_local3.localName().toLowerCase() == "tracklist"){ for each (_local4 in _local3.children()) { _local2.push(XSPFParser.parseItem(_local4)); }; }; }; return (_local2); } public static function parseItem(_arg1:XML):Object{ var _local2:Object; var _local3:XML; _local2 = new Object(); for each (_local3 in _arg1.children()) { if (!_local3.localName()){ break; }; switch (_local3.localName().toLowerCase()){ case "location": _local2["file"] = _local3.text().toString(); break; case "title": _local2["title"] = _local3.text().toString(); break; case "annotation": _local2["description"] = _local3.text().toString(); break; case "info": _local2["link"] = _local3.text().toString(); break; case "image": _local2["image"] = _local3.text().toString(); break; case "creator": _local2["author"] = _local3.text().toString(); break; case "duration": _local2["duration"] = Strings.seconds(_local3.text()); break; case "meta": _local2[_local3.@rel] = _local3.text().toString(); break; }; }; _local2 = JWParser.parseEntry(_arg1, _local2); return (_local2); } } }//package com.jeroenwijering.parsers
Section 31
//Controller (com.jeroenwijering.player.Controller) package com.jeroenwijering.player { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import com.jeroenwijering.utils.*; import com.jeroenwijering.parsers.*; import flash.geom.*; import flash.net.*; import flash.system.*; public class Controller extends EventDispatcher { private var loader:URLLoader; private var EXTENSIONS:Object; private var view:View; private var model:Model; private var sploader:SPLoader; private var config:Object; public var playlist:Array; private var randomizer:Randomizer; private var ELEMENTS:Object; private var skin:MovieClip; public function Controller(_arg1:Object, _arg2:MovieClip, _arg3:SPLoader):void{ EXTENSIONS = {3g2:"video", 3gp:"video", aac:"video", f4b:"video", f4p:"video", f4v:"video", flv:"video", gif:"image", jpg:"image", m4a:"video", m4v:"video", mov:"video", mp3:"sound", mp4:"video", png:"image", rbs:"sound", sdp:"video", swf:"image", vp6:"video"}; ELEMENTS = {author:undefined, date:undefined, description:undefined, duration:0, file:undefined, image:undefined, link:undefined, start:0, streamer:undefined, tags:undefined, title:undefined, type:undefined}; super(); config = _arg1; skin = _arg2; sploader = _arg3; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, loaderHandler); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function metaHandler(_arg1:ModelEvent):void{ if (((_arg1.data.duration) && ((playlist[config["item"]]["duration"] == 0)))){ playlist[config["item"]]["duration"] = _arg1.data.duration; }; if (_arg1.data.width){ playlist[config["item"]]["width"] = _arg1.data.width; playlist[config["item"]]["height"] = _arg1.data.height; }; } private function loadHandler(_arg1:ViewEvent):void{ var _local2:Object; var _local3:String; var _local4:Array; var _local5:Object; if (config["state"] != "IDLE"){ stopHandler(); }; _local2 = new Object(); if (typeof(_arg1.data.object) == "array"){ playlistHandler(_arg1.data.object); } else { if (typeof(_arg1.data.object) == "string"){ _local2["file"] = _arg1.data.object; } else { if (_arg1.data.object["file"]){ for (_local3 in ELEMENTS) { if (_arg1.data.object[_local3]){ _local2[_local3] = Strings.serialize(_arg1.data.object[_local3]); }; }; }; }; }; if (_local2["file"]){ if (getModelType(_local2, false) == null){ loader.load(new URLRequest(_local2["file"])); return; }; playlistHandler(new Array(_local2)); } else { _local4 = new Array(); for each (_local5 in _arg1.data.object) { _local4.push(_local5); }; playlistHandler(_local4); }; } private function fullscreenHandler(_arg1:ViewEvent):void{ var evt = _arg1; if (skin.stage["displayState"] == "fullScreen"){ skin.stage["displayState"] = "normal"; } else { try { fullscreenrect(); } catch(err:Error) { }; skin.stage["displayState"] = "fullScreen"; }; } private function prevHandler(_arg1:ViewEvent):void{ if (config["item"] == 0){ playItem((playlist.length - 1)); } else { playItem((config["item"] - 1)); }; } private function playlistHandler(_arg1:Array):void{ var _local2:Number; var _local3:Array; _local2 = (_arg1.length - 1); while (_local2 > -1) { if (!_arg1[_local2]["duration"]){ _arg1[_local2]["duration"] = 0; }; if (!_arg1[_local2]["start"]){ _arg1[_local2]["start"] = 0; }; if (((!(_arg1[_local2]["streamer"])) && (config["streamer"]))){ _arg1[_local2]["streamer"] = config["streamer"]; }; if (config["replace"]){ _local3 = config["replace"].split("|"); _arg1[_local2]["file"] = _arg1[_local2]["file"].replace(RegExp(_local3[0]), _local3[1]); }; _arg1[_local2]["type"] = getModelType(_arg1[_local2], true); if (!_arg1[_local2]["type"]){ _arg1.splice(_local2, 1); }; _local2--; }; if (_arg1.length > 0){ playlist = _arg1; } else { dispatchEvent(new ControllerEvent(ControllerEvent.ERROR, {message:"No valid filetypes found in this playlist"})); return; }; if (config["shuffle"] == true){ randomizer = new Randomizer(playlist.length); config["item"] = randomizer.pick(); } else { if (config["item"] >= playlist.length){ config["item"] = (playlist.length - 1); }; }; dispatchEvent(new ControllerEvent(ControllerEvent.PLAYLIST, {playlist:playlist})); if (config["autostart"] == true){ playItem(); }; } private function fullscreenrect():void{ var srx:Number; var asr:Number; var pnt:Point; var wid:Number; srx = Capabilities.screenResolutionX; asr = (srx / Capabilities.screenResolutionY); pnt = skin.parent.localToGlobal(new Point(skin.x, skin.y)); try { wid = playlist[config["item"]]["width"]; } catch(err:Error) { }; if (((wid) && ((wid > srx)))){ skin.stage["fullScreenSourceRect"] = new Rectangle(pnt.x, pnt.y, srx, Capabilities.screenResolutionY); } else { if (((wid) && ((wid > (srx / 2))))){ skin.stage["fullScreenSourceRect"] = new Rectangle(pnt.x, pnt.y, wid, Math.round((wid / asr))); } else { skin.stage["fullScreenSourceRect"] = new Rectangle(pnt.x, pnt.y, (srx / 2), (Capabilities.screenResolutionY / 2)); }; }; } private function errorHandler(_arg1:ErrorEvent):void{ dispatchEvent(new ControllerEvent(ControllerEvent.ERROR, {message:_arg1.text})); } private function seekHandler(_arg1:ViewEvent):void{ var _local2:Number; if (((!((config["state"] == ModelStates.IDLE))) && ((playlist[config["item"]]["duration"] > 0)))){ _local2 = _arg1.data.position; if (_local2 < 1){ _local2 = 0; } else { if (_local2 > (playlist[config["item"]]["duration"] - 1)){ _local2 = (playlist[config["item"]]["duration"] - 1); }; }; dispatchEvent(new ControllerEvent(ControllerEvent.SEEK, {position:_local2})); }; } private function loaderHandler(_arg1:Event):void{ var dat:XML; var fmt:String; var evt = _arg1; try { dat = XML(evt.target.data); fmt = dat.localName().toLowerCase(); } catch(err:Error) { dispatchEvent(new ControllerEvent(ControllerEvent.ERROR, {message:"This playlist is not a valid XML file."})); return; }; switch (fmt){ case "rss": playlistHandler(RSSParser.parse(dat)); break; case "playlist": playlistHandler(XSPFParser.parse(dat)); break; case "asx": playlistHandler(ASXParser.parse(dat)); break; case "smil": playlistHandler(SMILParser.parse(dat)); break; case "feed": playlistHandler(ATOMParser.parse(dat)); break; default: dispatchEvent(new ControllerEvent(ControllerEvent.ERROR, {message:("Unknown playlist format: " + fmt)})); return; }; } private function itemHandler(_arg1:ViewEvent):void{ var _local2:Number; _local2 = _arg1.data.index; if (_local2 < 0){ playItem(0); } else { if (_local2 > (playlist.length - 1)){ playItem((playlist.length - 1)); } else { if (!isNaN(_local2)){ playItem(_local2); }; }; }; } private function volumeHandler(_arg1:ViewEvent):void{ var _local2:Number; _local2 = _arg1.data.percentage; if (_local2 < 1){ muteHandler(new ViewEvent(ViewEvent.MUTE, {state:true})); } else { if (((!(isNaN(_local2))) && ((_local2 < 101)))){ if (config["mute"] == true){ muteHandler(new ViewEvent(ViewEvent.MUTE, {state:false})); }; config["volume"] = _local2; Configger.saveCookie("volume", config["volume"]); dispatchEvent(new ControllerEvent(ControllerEvent.VOLUME, {percentage:_local2})); }; }; } private function redrawHandler(_arg1:ViewEvent=null):void{ var dps:String; var evt = _arg1; try { dps = skin.stage["displayState"]; } catch(err:Error) { }; if ((((dps == "fullScreen")) && (config["resizing"]))){ config["fullscreen"] = true; sploader.layoutFullscreen(); } else { if (config["resizing"]){ config["width"] = skin.stage.stageWidth; config["height"] = skin.stage.stageHeight; }; config["fullscreen"] = false; sploader.layoutNormal(); }; dispatchEvent(new ControllerEvent(ControllerEvent.RESIZE, {fullscreen:config["fullscreen"], width:config["width"], height:config["height"]})); } private function nextHandler(_arg1:ViewEvent=null):void{ if (((playlist) && ((config["shuffle"] == true)))){ playItem(randomizer.pick()); } else { if (((playlist) && ((config["item"] == (playlist.length - 1))))){ playItem(0); } else { if (playlist){ playItem((config["item"] + 1)); }; }; }; } public function closeMVC(_arg1:Model, _arg2:View):void{ model = _arg1; model.addEventListener(ModelEvent.META, metaHandler); model.addEventListener(ModelEvent.STATE, stateHandler); view = _arg2; view.addEventListener(ViewEvent.FULLSCREEN, fullscreenHandler); view.addEventListener(ViewEvent.ITEM, itemHandler); view.addEventListener(ViewEvent.LINK, linkHandler); view.addEventListener(ViewEvent.LOAD, loadHandler); view.addEventListener(ViewEvent.MUTE, muteHandler); view.addEventListener(ViewEvent.NEXT, nextHandler); view.addEventListener(ViewEvent.PLAY, playHandler); view.addEventListener(ViewEvent.PREV, prevHandler); view.addEventListener(ViewEvent.REDRAW, redrawHandler); view.addEventListener(ViewEvent.SEEK, seekHandler); view.addEventListener(ViewEvent.STOP, stopHandler); view.addEventListener(ViewEvent.VOLUME, volumeHandler); } private function getModelType(_arg1:Object, _arg2:Boolean):String{ if (!_arg1["file"]){ return (null); }; if (_arg1["type"]){ return (_arg1["type"]); }; if (((_arg1["streamer"]) && (_arg2))){ if (_arg1["streamer"].substr(0, 4) == "rtmp"){ return ("rtmp"); }; if (_arg1["streamer"].indexOf("/") != -1){ return ("http"); }; return (_arg1["streamer"]); //unresolved jump }; if ((((_arg1["file"].indexOf("youtube.com/w") > -1)) || ((_arg1["file"].indexOf("youtube.com/v") > -1)))){ return ("youtube"); }; return (EXTENSIONS[_arg1["file"].substr(-3).toLowerCase()]); } private function playItem(_arg1:Number=undefined):void{ if (!isNaN(_arg1)){ config["item"] = _arg1; }; dispatchEvent(new ControllerEvent(ControllerEvent.ITEM, {index:config["item"]})); } private function stopHandler(_arg1:ViewEvent=undefined):void{ dispatchEvent(new ControllerEvent(ControllerEvent.STOP)); } private function linkHandler(_arg1:ViewEvent):void{ var _local2:Number; var _local3:String; _local2 = config["item"]; if (_arg1.data.index){ _local2 = _arg1.data.index; }; _local3 = playlist[_local2]["link"]; if (_local3 != null){ navigateToURL(new URLRequest(_local3), config["linktarget"]); }; playHandler(new ViewEvent(ViewEvent.PLAY, {state:false})); } private function muteHandler(_arg1:ViewEvent):void{ if ((((_arg1.data.state == true)) || ((_arg1.data.state == false)))){ if (_arg1.data.state == config["mute"]){ return; }; config["mute"] = _arg1.data.state; } else { config["mute"] = !(config["mute"]); }; Configger.saveCookie("mute", config["mute"]); dispatchEvent(new ControllerEvent(ControllerEvent.MUTE, {state:config["mute"]})); } private function playHandler(_arg1:ViewEvent):void{ if (playlist){ if (((!((_arg1.data.state == false))) && ((config["state"] == ModelStates.PAUSED)))){ dispatchEvent(new ControllerEvent(ControllerEvent.PLAY, {state:true})); } else { if (((!((_arg1.data.state == false))) && ((config["state"] == ModelStates.COMPLETED)))){ dispatchEvent(new ControllerEvent(ControllerEvent.SEEK, {position:0})); } else { if (((!((_arg1.data.state == false))) && ((config["state"] == ModelStates.IDLE)))){ playItem(); } else { if (((!((_arg1.data.state == true))) && ((((config["state"] == ModelStates.PLAYING)) || ((config["state"] == ModelStates.BUFFERING)))))){ dispatchEvent(new ControllerEvent(ControllerEvent.PLAY, {state:false})); }; }; }; }; }; } private function stateHandler(_arg1:ModelEvent):void{ if (_arg1.data.newstate == ModelStates.COMPLETED){ switch (config["repeat"]){ case "single": playHandler(new ViewEvent(ViewEvent.PLAY, {state:true})); break; case "always": if (playlist.length == 1){ playHandler(new ViewEvent(ViewEvent.PLAY, {state:true})); } else { nextHandler(); }; break; case "list": if ((((((config["shuffle"] == true)) && ((randomizer.length > 0)))) || ((((config["shuffle"] == false)) && ((config["item"] < (playlist.length - 1))))))){ nextHandler(); }; break; }; }; } } }//package com.jeroenwijering.player
Section 32
//Model (com.jeroenwijering.player.Model) package com.jeroenwijering.player { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import com.jeroenwijering.models.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.system.*; public class Model extends EventDispatcher { public var config:Object; public var display:MovieClip; private var item:Object; private var thumb:Loader; private var image:String; private var controller:Controller; private var models:Object; private var sploader:SPLoader; public function Model(_arg1:Object, _arg2:MovieClip, _arg3:SPLoader, _arg4:Controller):void{ config = _arg1; display = MovieClip(_arg2.getChildByName("display")); sploader = _arg3; controller = _arg4; controller.addEventListener(ControllerEvent.ITEM, itemHandler); controller.addEventListener(ControllerEvent.MUTE, muteHandler); controller.addEventListener(ControllerEvent.PLAY, playHandler); controller.addEventListener(ControllerEvent.PLAYLIST, playlistHandler); controller.addEventListener(ControllerEvent.RESIZE, resizeHandler); controller.addEventListener(ControllerEvent.SEEK, seekHandler); controller.addEventListener(ControllerEvent.STOP, stopHandler); controller.addEventListener(ControllerEvent.VOLUME, volumeHandler); thumb = new Loader(); thumb.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbHandler); thumb.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, thumbHandler); Draw.clear(display.media); display.addChildAt(thumb, (display.getChildIndex(display.media) + 1)); display.media.visible = false; models = new Object(); } private function resizeHandler(_arg1:Event=null):void{ var _local2:Number; var _local3:Number; _local2 = sploader.getPlugin("display").config["width"]; _local3 = sploader.getPlugin("display").config["height"]; Stretcher.stretch(display.media, _local2, _local3, config["stretching"]); if (thumb.width > 10){ Stretcher.stretch(thumb, _local2, _local3, config["stretching"]); }; } public function addModel(_arg1:AbstractModel, _arg2:String):void{ models[_arg2] = _arg1; } private function volumeHandler(_arg1:ControllerEvent):void{ if (item){ models[item["type"]].volume(_arg1.data.percentage); }; } public function mediaHandler(_arg1:DisplayObject=undefined):void{ Draw.clear(display.media); display.media.addChild(_arg1); resizeHandler(); } private function playlistHandler(_arg1:ControllerEvent):void{ var _local2:String; _local2 = controller.playlist[config["item"]]["image"]; if (((_local2) && (!((_local2 == image))))){ image = _local2; thumb.load(new URLRequest(_local2), new LoaderContext(true)); }; } private function thumbHandler(_arg1:Event){ var evt = _arg1; try { Bitmap(thumb.content).smoothing = true; } catch(err:Error) { }; resizeHandler(); } private function stopHandler(_arg1:ControllerEvent=undefined):void{ if (item){ models[item["type"]].stop(); }; } private function muteHandler(_arg1:ControllerEvent):void{ if (item){ if (_arg1.data.state == true){ models[item["type"]].volume(0); } else { models[item["type"]].volume(config["volume"]); }; }; } private function seekHandler(_arg1:ControllerEvent):void{ if (item){ models[item["type"]].seek(_arg1.data.position); }; } private function itemHandler(_arg1:ControllerEvent):void{ if (item){ models[item["type"]].stop(); }; item = controller.playlist[config["item"]]; if (models[item["type"]]){ models[item["type"]].load(item); } else { sendEvent(ModelEvent.ERROR, {message:"No suiteable model found for playback of this file."}); }; if (item["image"]){ if (item["image"] != image){ image = item["image"]; thumb.load(new URLRequest(item["image"]), new LoaderContext(true)); }; } else { if (image){ image = undefined; thumb.unload(); }; }; } public function sendEvent(_arg1:String, _arg2:Object):void{ switch (_arg1){ case ModelEvent.STATE: _arg2["oldstate"] = config["state"]; config["state"] = _arg2.newstate; switch (_arg2["newstate"]){ case ModelStates.IDLE: sendEvent(ModelEvent.LOADED, {loaded:0, offset:0, total:0}); case ModelStates.COMPLETED: thumb.visible = true; display.media.visible = false; sendEvent(ModelEvent.TIME, {position:0, duration:item["duration"]}); break; case ModelStates.PLAYING: if ((((((item["file"].indexOf("m4a") == -1)) && ((item["file"].indexOf("mp3") == -1)))) && ((item["file"].indexOf("aac") == -1)))){ thumb.visible = false; display.media.visible = true; } else { thumb.visible = true; display.media.visible = false; }; break; }; dispatchEvent(new ModelEvent(_arg1, _arg2)); break; case ModelEvent.META: if (_arg2.width){ resizeHandler(); }; default: dispatchEvent(new ModelEvent(_arg1, _arg2)); break; }; } private function playHandler(_arg1:ControllerEvent):void{ if (item){ if (_arg1.data.state == true){ models[item["type"]].play(); } else { models[item["type"]].pause(); }; }; } } }//package com.jeroenwijering.player
Section 33
//Player (com.jeroenwijering.player.Player) package com.jeroenwijering.player { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import com.jeroenwijering.models.*; import com.jeroenwijering.utils.*; import com.jeroenwijering.plugins.*; public class Player extends MovieClip { protected var model:Model; public var config:Object; public var skin:MovieClip; public var view:View; protected var sploader:SPLoader; protected var controller:Controller; protected var configger:Configger; public var player:MovieClip; public function Player():void{ var i:Number; config = {author:undefined, date:undefined, description:undefined, duration:0, file:undefined, image:undefined, link:undefined, start:0, streamer:undefined, tags:undefined, title:undefined, type:undefined, backcolor:undefined, frontcolor:undefined, lightcolor:undefined, screencolor:undefined, controlbar:"bottom", height:300, playlist:"none", playlistsize:180, skin:undefined, width:400, autostart:false, bufferlength:1, displayclick:"play", fullscreen:false, icons:true, item:0, logo:undefined, mute:false, replace:undefined, repeat:"none", resizing:true, respectduration:false, shuffle:false, smoothing:true, state:"IDLE", stretching:"uniform", volume:90, abouttext:undefined, aboutlink:"http://www.longtailvideo.com/players/jw-flv-player/", client:undefined, id:undefined, linktarget:"_blank", plugins:undefined, token:undefined, tracecall:undefined, version:"4.4.198"}; super(); skin = this["player"]; i = 0; while (i < skin.numChildren) { skin.getChildAt(i).visible = false; i = (i + 1); }; try { addEventListener(Event.ADDED_TO_STAGE, loadConfig); } catch(err:Error) { loadConfig(); }; } protected function startPlayer(_arg1:SPLoaderEvent=null){ view.sendEvent(ViewEvent.REDRAW); dispatchEvent(new PlayerEvent(PlayerEvent.READY)); view.playerReady(); if (config["file"]){ view.sendEvent(ViewEvent.LOAD, config); }; } protected function loadMVC(_arg1:SPLoaderEvent=null):void{ controller = new Controller(config, skin, sploader); model = new Model(config, skin, sploader, controller); view = new View(config, skin, sploader, controller, model); controller.closeMVC(model, view); addModels(); addPlugins(); sploader.addEventListener(SPLoaderEvent.PLUGINS, startPlayer); sploader.loadPlugins(); } protected function addModels():void{ model.addModel(new HTTPModel(model), "http"); model.addModel(new ImageModel(model), "image"); model.addModel(new RTMPModel(model), "rtmp"); model.addModel(new SoundModel(model), "sound"); model.addModel(new VideoModel(model), "video"); model.addModel(new YoutubeModel(model), "youtube"); model.addModel(new CameraModel(model), "camera"); model.addModel(new LighttpdModel(model), "lighttpd"); model.addModel(new NginxModel(model), "nginx"); model.addModel(new BitgravityModel(model), "bitgravity"); model.addModel(new HighwindsModel(model), "highwinds"); model.addModel(new FLVSeekModel(model), "flvseek"); model.addModel(new FCSubscribeModel(model), "fcsubscribe"); } protected function loadSkin(_arg1:Event=null):void{ sploader = new SPLoader(this); sploader.addEventListener(SPLoaderEvent.SKIN, loadMVC); sploader.loadSkin(); } protected function addPlugins():void{ sploader.addPlugin(new Display(), "display"); sploader.addPlugin(new Rightclick(), "rightclick"); sploader.addPlugin(new Controlbar(), "controlbar"); sploader.addPlugin(new Playlist(), "playlist"); } protected function loadConfig(_arg1:Event=null):void{ var evt = _arg1; try { removeEventListener(Event.ADDED_TO_STAGE, loadConfig); } catch(err:Error) { loadConfig(); }; configger = new Configger(this); configger.addEventListener(Event.COMPLETE, loadSkin); configger.load(config); } } }//package com.jeroenwijering.player
Section 34
//SPLoader (com.jeroenwijering.player.SPLoader) package com.jeroenwijering.player { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.system.*; public class SPLoader extends EventDispatcher { private var config:Object; private var loader:Loader; private var done:Number;// = 0 private var basedir:String;// = "http://plugins.longtailvideo.com/" private var plugins:Array; private var player:Player; private var skin:MovieClip; public function SPLoader(_arg1:Player):void{ done = 0; basedir = "http://plugins.longtailvideo.com/"; super(); config = _arg1.config; skin = _arg1.skin; player = _arg1; plugins = new Array(); } public function addPlugin(_arg1:Object, _arg2:String, _arg3:Boolean=false):void{ var obj:Object; var cbr:DisplayObject; var str:String; var clp:DisplayObject; var org:String; var pgi = _arg1; var nam = _arg2; var ext = _arg3; obj = {reference:pgi, name:nam, x:0, y:0, width:400, height:300}; cbr = skin.getChildByName("controlbar"); if (nam == "controlbar"){ config["controlbar.position"] = config["controlbar"]; config["controlbar.size"] = cbr.height; config["controlbar.margin"] = cbr.x; } else { if (nam == "playlist"){ config["playlist.position"] = config["playlist"]; config["playlist.size"] = config["playlistsize"]; }; }; try { for (org in pgi.config) { obj[org] = pgi.config[org]; }; } catch(err:Error) { }; for (str in config) { if (str.indexOf((nam + ".")) == 0){ obj[str.substring((nam.length + 1))] = config[str]; }; }; if (ext == true){ clp = DisplayObject(pgi); skin.addChild(clp); } else { if (skin.getChildByName(nam)){ clp = skin.getChildByName(nam); } else { clp = new MovieClip(); clp.name = nam; skin.addChildAt(clp, 1); }; }; plugins.push(obj); try { pgi.config = obj; pgi.clip = clp; } catch(err:Error) { }; skin.setChildIndex(cbr, (skin.numChildren - 1)); pgi.initializePlugin(player.view); } public function layoutFullscreen(){ var _local1:Number; _local1 = 0; while (_local1 < plugins.length) { if ((((((plugins[_local1]["position"] == "over")) || ((plugins[_local1]["position"] == undefined)))) || ((((plugins[_local1]["name"] == "controlbar")) && (!((plugins[_local1]["position"] == "none"))))))){ plugins[_local1]["x"] = 0; plugins[_local1]["y"] = 0; plugins[_local1]["width"] = skin.stage.stageWidth; plugins[_local1]["height"] = skin.stage.stageHeight; plugins[_local1]["visible"] = true; } else { plugins[_local1]["visible"] = false; }; _local1++; }; if (config["resizing"]){ config["width"] = skin.stage.stageWidth; config["height"] = skin.stage.stageHeight; }; } public function getPluginConfig(_arg1:Object):Object{ var _local2:Number; _local2 = 0; while (_local2 < plugins.length) { if (plugins[_local2]["reference"] == _arg1){ return (plugins[_local2]); }; _local2++; }; return (null); } private function pluginHandler(_arg1:Event):void{ var idx:Number; var end:Number; var nam:String; var evt = _arg1; try { idx = evt.target.url.lastIndexOf("/"); end = (evt.target.url.length - 4); if (evt.target.url.indexOf("-", (end - 5)) > -1){ end = evt.target.url.indexOf("-", (end - 5)); }; nam = evt.target.url.substring((idx + 1), end).toLowerCase(); addPlugin(evt.target.content, nam, true); evt.target.loader.visible = true; } catch(err:Error) { }; done--; if (done == 0){ dispatchEvent(new SPLoaderEvent(SPLoaderEvent.PLUGINS)); } else { if (done < 0){ player.view.sendEvent("REDRAW"); }; }; } public function loadSkin():void{ if (config["skin"]){ loadSWF(config["skin"], true); } else { dispatchEvent(new SPLoaderEvent(SPLoaderEvent.SKIN)); }; } private function skinError(_arg1:IOErrorEvent=null):void{ dispatchEvent(new SPLoaderEvent(SPLoaderEvent.SKIN)); } private function pluginError(_arg1:IOErrorEvent):void{ done--; if (done == 0){ dispatchEvent(new SPLoaderEvent(SPLoaderEvent.PLUGINS)); }; } private function skinHandler(_arg1:Event):void{ var skn:MovieClip; var chd:DisplayObject; var idx:Number; var evt = _arg1; try { skn = evt.target.content["player"]; while (skn.numChildren > 0) { chd = skin.getChildByName(skn.getChildAt(0).name); if (chd){ idx = skin.getChildIndex(chd); skin.removeChild(chd); skin.addChildAt(skn.getChildAt(0), idx); skin.getChildByName(chd.name).visible = false; } else { skin.addChild(skn.getChildAt(0)); }; }; dispatchEvent(new SPLoaderEvent(SPLoaderEvent.SKIN)); } catch(err:Error) { }; } public function getPlugin(_arg1:String):Object{ var _local2:Number; _local2 = 0; while (_local2 < plugins.length) { if (plugins[_local2]["name"] == _arg1){ return (plugins[_local2]["reference"]); }; _local2++; }; return (null); } public function layoutNormal():void{ var _local1:Object; var _local2:Array; var _local3:Number; var _local4:Number; _local1 = {x:0, y:0, width:config["width"], height:config["height"]}; _local2 = new Array(); _local3 = (plugins.length - 1); while (_local3 >= 0) { switch (plugins[_local3]["position"]){ case "left": plugins[_local3]["x"] = _local1.x; plugins[_local3]["y"] = _local1.y; plugins[_local3]["width"] = plugins[_local3]["size"]; plugins[_local3]["height"] = _local1.height; plugins[_local3]["visible"] = true; _local1.x = (_local1.x + plugins[_local3]["size"]); _local1.width = (_local1.width - plugins[_local3]["size"]); break; case "top": plugins[_local3]["x"] = _local1.x; plugins[_local3]["y"] = _local1.y; plugins[_local3]["width"] = _local1.width; plugins[_local3]["height"] = plugins[_local3]["size"]; plugins[_local3]["visible"] = true; _local1.y = (_local1.y + plugins[_local3]["size"]); _local1.height = (_local1.height - plugins[_local3]["size"]); break; case "right": plugins[_local3]["x"] = ((_local1.x + _local1.width) - plugins[_local3]["size"]); plugins[_local3]["y"] = _local1.y; plugins[_local3]["width"] = plugins[_local3]["size"]; plugins[_local3]["height"] = _local1.height; plugins[_local3]["visible"] = true; _local1.width = (_local1.width - plugins[_local3]["size"]); break; case "bottom": plugins[_local3]["x"] = _local1.x; plugins[_local3]["y"] = ((_local1.y + _local1.height) - plugins[_local3]["size"]); plugins[_local3]["width"] = _local1.width; plugins[_local3]["height"] = plugins[_local3]["size"]; plugins[_local3]["visible"] = true; _local1.height = (_local1.height - plugins[_local3]["size"]); break; case "none": plugins[_local3]["visible"] = false; break; default: _local2.push(_local3); break; }; _local3--; }; _local4 = 0; while (_local4 < _local2.length) { plugins[_local2[_local4]]["x"] = _local1.x; plugins[_local2[_local4]]["y"] = _local1.y; plugins[_local2[_local4]]["width"] = _local1.width; plugins[_local2[_local4]]["height"] = _local1.height; plugins[_local2[_local4]]["visible"] = true; _local4++; }; if (config["resizing"]){ config["width"] = _local1.width; config["height"] = _local1.height; }; } public function loadPlugins():void{ var _local1:Array; var _local2:Number; if (config["plugins"]){ _local1 = config["plugins"].split(","); done = _local1.length; _local2 = 0; while (_local2 < _local1.length) { loadSWF(_local1[_local2], false); _local2++; }; } else { dispatchEvent(new SPLoaderEvent(SPLoaderEvent.PLUGINS)); }; } public function loadPlugin(_arg1:String, _arg2:String=null){ var _local3:Array; var _local4:String; var _local5:Array; if (((!((_arg2 == null))) && (!((_arg2 == ""))))){ _local3 = _arg2.split("&"); for (_local4 in _local3) { _local5 = _local3[_local4].split("="); config[_local5[0]] = Strings.serialize(_local5[1]); }; }; loadSWF(_arg1, false); } private function loadSWF(_arg1:String, _arg2:Boolean):void{ var _local3:Loader; var _local4:LoaderContext; if (_arg1.substr(-4) == ".swf"){ _arg1 = _arg1.substr(0, (_arg1.length - 4)); }; _local3 = new Loader(); if (_arg2){ _local3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, skinError); _local3.contentLoaderInfo.addEventListener(Event.COMPLETE, skinHandler); } else { _local3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, pluginError); _local3.contentLoaderInfo.addEventListener(Event.COMPLETE, pluginHandler); }; _arg1 = (_arg1 + ".swf"); if (skin.loaderInfo.url.indexOf("http") == 0){ _local4 = new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain); if (_arg2){ _local3.load(new URLRequest(_arg1), _local4); } else { _local3.load(new URLRequest((basedir + _arg1)), _local4); }; } else { _local3.load(new URLRequest(_arg1)); }; } } }//package com.jeroenwijering.player
Section 35
//View (com.jeroenwijering.player.View) package com.jeroenwijering.player { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import flash.ui.*; import com.jeroenwijering.utils.*; import flash.utils.*; import flash.system.*; import flash.external.*; public class View extends AbstractView { private var controller:Controller; private var ready:Boolean; private var model:Model; private var context:ContextMenu; private var sploader:SPLoader; private var listeners:Array; private var _config:Object; private var _skin:MovieClip; public function View(_arg1:Object, _arg2:MovieClip, _arg3:SPLoader, _arg4:Controller, _arg5:Model):void{ Security.allowDomain("*"); _config = _arg1; _config["client"] = ("FLASH " + Capabilities.version); _skin = _arg2; if (_config["resizing"]){ _skin.stage.scaleMode = "noScale"; _skin.stage.align = "TL"; _skin.stage.addEventListener(Event.RESIZE, resizeHandler); } else { _skin.stage.addEventListener(FullScreenEvent.FULL_SCREEN, resizeHandler); }; sploader = _arg3; controller = _arg4; model = _arg5; setListening(); listeners = new Array(); } override public function removeControllerListener(_arg1:String, _arg2:Function):void{ controller.removeEventListener(_arg1.toUpperCase(), _arg2); } public function getJSPluginConfig(_arg1:String):Object{ var obj:Object; var s:String; var plg:*; var cfg:Object; var nam = _arg1; try { plg = getPlugin(nam); cfg = getPluginConfig(plg); } catch(err:Error) { return ({error:"plugin not loaded"}); }; obj = new Object(); for (s in cfg) { if ((((((cfg[s] is String)) || ((cfg[s] is Boolean)))) || ((cfg[s] is Number)))){ obj[s] = cfg[s]; }; }; return (obj); } override public function removeViewListener(_arg1:String, _arg2:Function):void{ this.removeEventListener(_arg1.toUpperCase(), _arg2); } private function setController(_arg1:ControllerEvent):void{ forward("CONTROLLER", _arg1.type, _arg1.data); } private function removeJSListener(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:Number; _local4 = 0; while (_local4 < listeners.length) { if ((((((listeners[_local4]["target"] == _arg1)) && ((listeners[_local4]["type"] == _arg2)))) && ((listeners[_local4]["callee"] == _arg3)))){ listeners.splice(_local4, 1); return; }; _local4++; }; } private function removeJSControllerListener(_arg1:String, _arg2:String):Boolean{ removeJSListener("CONTROLLER", _arg1.toUpperCase(), _arg2); return (true); } private function setView(_arg1:ViewEvent):void{ forward("VIEW", _arg1.type, _arg1.data); } override public function getPlugin(_arg1:String):Object{ return (sploader.getPlugin(_arg1)); } private function getConfig():Object{ var _local1:Object; var _local2:String; _local1 = new Object(); for (_local2 in _config) { if ((((_local2.indexOf(".") == -1)) && (!((_config[_local2] == undefined))))){ _local1[_local2] = _config[_local2]; }; }; return (_local1); } override public function loadPlugin(_arg1:String, _arg2:String=null):Boolean{ sploader.loadPlugin(_arg1, _arg2); return (true); } private function addJSControllerListener(_arg1:String, _arg2:String):Boolean{ listeners.push({target:"CONTROLLER", type:_arg1.toUpperCase(), callee:_arg2}); return (true); } override public function addViewListener(_arg1:String, _arg2:Function):void{ this.addEventListener(_arg1.toUpperCase(), _arg2); } override public function get config():Object{ return (_config); } private function addJSViewListener(_arg1:String, _arg2:String):Boolean{ listeners.push({target:"VIEW", type:_arg1.toUpperCase(), callee:_arg2}); return (true); } private function forward(_arg1:String, _arg2:String, _arg3:Object):void{ var _local4:String; var _local5:String; var _local6:String; var _local7:Object; _local4 = ""; for (_local5 in _arg3) { _local4 = (_local4 + (((_local5 + ":") + _arg3[_local5]) + ",")); }; if (_local4.length > 0){ _local4 = (("(" + _local4.substr(0, (_local4.length - 1))) + ")"); }; if (config["tracecall"] == "arthropod"){ _local7 = {CONTROLLER:"0xFF6666", VIEW:"0x66FF66", MODEL:"0x6666FF"}; Debug.log(((_arg2 + " ") + _local4), _local7[_arg1]); } else { if (config["tracecall"] == "flash"){ trace(((((_arg1 + ": ") + _arg2) + " ") + _local4)); } else { if (((config["tracecall"]) && (ready))){ ExternalInterface.call(config["tracecall"], ((((_arg1 + ": ") + _arg2) + " ") + _local4)); }; }; }; if (!_arg3){ _arg3 = new Object(); }; _arg3.id = config["id"]; _arg3.client = config["client"]; _arg3.version = config["version"]; for (_local6 in listeners) { if ((((listeners[_local6]["target"] == _arg1)) && ((listeners[_local6]["type"] == _arg2)))){ ExternalInterface.call(listeners[_local6]["callee"], _arg3); }; }; } private function getPlaylist():Array{ var _local1:Array; var _local2:Object; var _local3:Number; var _local4:String; _local1 = new Array(); _local2 = new Object(); _local3 = 0; while (_local3 < controller.playlist.length) { _local2 = new Object(); for (_local4 in controller.playlist[_local3]) { if (_local4.indexOf(".") == -1){ _local2[_local4] = controller.playlist[_local3][_local4]; }; }; _local1.push(_local2); _local3++; }; return (_local1); } override public function getPluginConfig(_arg1:Object):Object{ return (sploader.getPluginConfig(_arg1)); } override public function get playlist():Array{ return (controller.playlist); } override public function removeModelListener(_arg1:String, _arg2:Function):void{ model.removeEventListener(_arg1.toUpperCase(), _arg2); } private function playerReadyPing(){ try { if (((ExternalInterface.objectID) && (!(_config["id"])))){ _config["id"] = ExternalInterface.objectID; }; if (_config["id"]){ ExternalInterface.addCallback("addControllerListener", addJSControllerListener); ExternalInterface.addCallback("addModelListener", addJSModelListener); ExternalInterface.addCallback("addViewListener", addJSViewListener); ExternalInterface.addCallback("removeControllerListener", removeJSControllerListener); ExternalInterface.addCallback("removeModelListener", removeJSModelListener); ExternalInterface.addCallback("removeViewListener", removeJSViewListener); ExternalInterface.addCallback("getConfig", getConfig); ExternalInterface.addCallback("getPlaylist", getPlaylist); ExternalInterface.addCallback("getPluginConfig", getJSPluginConfig); ExternalInterface.addCallback("loadPlugin", loadPlugin); ExternalInterface.addCallback("sendEvent", sendEvent); ExternalInterface.call("playerReady", {id:config["id"], client:config["client"], version:config["version"]}); }; } catch(err:Error) { }; } override public function addModelListener(_arg1:String, _arg2:Function):void{ model.addEventListener(_arg1.toUpperCase(), _arg2); } private function removeJSModelListener(_arg1:String, _arg2:String):Boolean{ removeJSListener("MODEL", _arg1.toUpperCase(), _arg2); return (true); } public function playerReady(){ if (((((ExternalInterface.available) && ((_skin.loaderInfo.url.indexOf("http") == 0)))) && (!((ready == true))))){ ready = true; setTimeout(playerReadyPing, 50); }; } private function removeJSViewListener(_arg1:String, _arg2:String):Boolean{ removeJSListener("VIEW", _arg1.toUpperCase(), _arg2); return (true); } private function setModel(_arg1:ModelEvent):void{ forward("MODEL", _arg1.type, _arg1.data); } override public function addControllerListener(_arg1:String, _arg2:Function):void{ controller.addEventListener(_arg1.toUpperCase(), _arg2); } override public function sendEvent(_arg1:String, _arg2:Object=undefined):void{ var _local3:Object; _arg1 = _arg1.toUpperCase(); _local3 = new Object(); switch (_arg1){ case "ITEM": _local3["index"] = _arg2; break; case "LINK": _local3["index"] = _arg2; break; case "LOAD": _local3["object"] = _arg2; break; case "SEEK": _local3["position"] = _arg2; break; case "VOLUME": _local3["percentage"] = _arg2; break; default: if ((((_arg2 == true)) || ((_arg2 == "true")))){ _local3["state"] = true; } else { if ((((_arg2 == false)) || ((_arg2 == "false")))){ _local3["state"] = false; }; }; break; }; dispatchEvent(new ViewEvent(_arg1, _local3)); } private function addJSModelListener(_arg1:String, _arg2:String):Boolean{ listeners.push({target:"MODEL", type:_arg1.toUpperCase(), callee:_arg2}); return (true); } private function resizeHandler(_arg1:Event=undefined):void{ dispatchEvent(new ViewEvent(ViewEvent.REDRAW)); } private function setListening():void{ if (config["tracecall"] == "arthropod"){ Debug.clear(); }; addControllerListener(ControllerEvent.ERROR, setController); addControllerListener(ControllerEvent.ITEM, setController); addControllerListener(ControllerEvent.MUTE, setController); addControllerListener(ControllerEvent.PLAY, setController); addControllerListener(ControllerEvent.PLAYLIST, setController); addControllerListener(ControllerEvent.RESIZE, setController); addControllerListener(ControllerEvent.SEEK, setController); addControllerListener(ControllerEvent.STOP, setController); addControllerListener(ControllerEvent.VOLUME, setController); addModelListener(ModelEvent.BUFFER, setModel); addModelListener(ModelEvent.ERROR, setModel); addModelListener(ModelEvent.LOADED, setModel); addModelListener(ModelEvent.META, setModel); addModelListener(ModelEvent.STATE, setModel); addModelListener(ModelEvent.TIME, setModel); addViewListener(ViewEvent.FULLSCREEN, setView); addViewListener(ViewEvent.ITEM, setView); addViewListener(ViewEvent.LINK, setView); addViewListener(ViewEvent.LOAD, setView); addViewListener(ViewEvent.MUTE, setView); addViewListener(ViewEvent.NEXT, setView); addViewListener(ViewEvent.PLAY, setView); addViewListener(ViewEvent.PREV, setView); addViewListener(ViewEvent.REDRAW, setView); addViewListener(ViewEvent.SEEK, setView); addViewListener(ViewEvent.STOP, setView); addViewListener(ViewEvent.TRACE, setView); addViewListener(ViewEvent.VOLUME, setView); } override public function get skin():MovieClip{ return (_skin); } } }//package com.jeroenwijering.player
Section 36
//Controlbar (com.jeroenwijering.plugins.Controlbar) package com.jeroenwijering.plugins { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import flash.ui.*; import com.jeroenwijering.utils.*; import flash.geom.*; import flash.utils.*; import flash.accessibility.*; public class Controlbar implements PluginInterface { public var config:Object; public var clip:MovieClip; private var light:ColorTransform; private var scrubber:MovieClip; private var SLIDERS; private var BUTTONS; private var view:AbstractView; private var clonee:MovieClip; private var front:ColorTransform; private var stacker:Stacker; private var blocking:Boolean; private var hiding:Number; public function Controlbar():void{ config = {}; BUTTONS = {playButton:"PLAY", pauseButton:"PLAY", stopButton:"STOP", prevButton:"PREV", nextButton:"NEXT", linkButton:"LINK", fullscreenButton:"FULLSCREEN", normalscreenButton:"FULLSCREEN", muteButton:"MUTE", unmuteButton:"MUTE"}; SLIDERS = {timeSlider:"SEEK", volumeSlider:"VOLUME"}; super(); } private function volumeHandler(_arg1:ControllerEvent=null):void{ var vsl:MovieClip; var evt = _arg1; try { vsl = clip.volumeSlider; vsl.mark.width = ((view.config["volume"] * (vsl.rail.width - (vsl.icon.width / 2))) / 100); vsl.icon.x = (vsl.mark.x + ((view.config["volume"] * (vsl.rail.width - vsl.icon.width)) / 100)); } catch(err:Error) { }; } private function loadedHandler(_arg1:ModelEvent=null):void{ var pc1:Number; var pc2:Number; var wid:Number; var icw:Number; var evt = _arg1; pc1 = 0; if (((evt) && ((evt.data.total > 0)))){ pc1 = (evt.data.loaded / evt.data.total); }; pc2 = 0; if (((evt) && (evt.data.offset))){ pc2 = (evt.data.offset / evt.data.total); }; try { wid = clip.timeSlider.rail.width; clip.timeSlider.mark.x = (pc2 * wid); clip.timeSlider.mark.width = (pc1 * wid); icw = (clip.timeSlider.icon.x + clip.timeSlider.icon.width); } catch(err:Error) { }; } private function setButtons():void{ var _local1:String; var _local2:String; for (_local1 in BUTTONS) { if (clip[_local1]){ clip[_local1].mouseChildren = false; clip[_local1].buttonMode = true; clip[_local1].addEventListener(MouseEvent.CLICK, clickHandler); clip[_local1].addEventListener(MouseEvent.MOUSE_OVER, overHandler); clip[_local1].addEventListener(MouseEvent.MOUSE_OUT, outHandler); }; }; for (_local2 in SLIDERS) { if (clip[_local2]){ clip[_local2].mouseChildren = false; clip[_local2].buttonMode = true; clip[_local2].addEventListener(MouseEvent.MOUSE_DOWN, downHandler); clip[_local2].addEventListener(MouseEvent.MOUSE_OVER, overHandler); clip[_local2].addEventListener(MouseEvent.MOUSE_OUT, outHandler); }; }; } private function downHandler(_arg1:MouseEvent):void{ var _local2:Rectangle; scrubber = MovieClip(_arg1.target); if (((!((blocking == true))) || ((scrubber.name == "volumeSlider")))){ _local2 = new Rectangle(scrubber.rail.x, scrubber.icon.y, (scrubber.rail.width - scrubber.icon.width), 0); scrubber.icon.startDrag(true, _local2); clip.stage.addEventListener(MouseEvent.MOUSE_UP, upHandler); } else { scrubber = undefined; }; } public function block(_arg1:Boolean):void{ blocking = _arg1; timeHandler(); } private function fixTime():void{ var scp:Number; try { scp = clip.timeSlider.scaleX; clip.timeSlider.scaleX = 1; clip.timeSlider.icon.x = (scp * clip.timeSlider.icon.x); clip.timeSlider.mark.x = (scp * clip.timeSlider.mark.x); clip.timeSlider.mark.width = (scp * clip.timeSlider.mark.width); clip.timeSlider.rail.width = (scp * clip.timeSlider.rail.width); clip.timeSlider.done.x = (scp * clip.timeSlider.done.x); clip.timeSlider.done.width = (scp * clip.timeSlider.done.width); } catch(err:Error) { }; } private function setColors():void{ var clr:ColorTransform; var btn:String; var sld:String; if (((view.config["backcolor"]) && (clip["playButton"].icon))){ clr = new ColorTransform(); clr.color = uint(("0x" + view.config["backcolor"].substr(-6))); clip.back.transform.colorTransform = clr; }; if (view.config["frontcolor"]){ try { front = new ColorTransform(); front.color = uint(("0x" + view.config["frontcolor"].substr(-6))); for (btn in BUTTONS) { if (clip[btn]){ clip[btn]["icon"].transform.colorTransform = front; }; }; for (sld in SLIDERS) { if (clip[sld]){ clip[sld]["icon"].transform.colorTransform = front; clip[sld]["mark"].transform.colorTransform = front; clip[sld]["rail"].transform.colorTransform = front; }; }; clip.elapsedText.textColor = front.color; clip.totalText.textColor = front.color; } catch(err:Error) { }; }; if (view.config["lightcolor"]){ light = new ColorTransform(); light.color = uint(("0x" + view.config["lightcolor"].substr(-6))); } else { light = front; }; if (light){ try { clip["timeSlider"]["done"].transform.colorTransform = light; clip["volumeSlider"]["mark"].transform.colorTransform = light; } catch(err:Error) { }; }; } private function stateHandler(_arg1:ModelEvent=undefined):void{ var dps:String; var evt = _arg1; clearTimeout(hiding); view.skin.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler); try { dps = clip.stage["displayState"]; } catch(err:Error) { }; switch (view.config["state"]){ case ModelStates.PLAYING: case ModelStates.BUFFERING: try { clip.playButton.visible = false; clip.pauseButton.visible = true; } catch(err:Error) { }; if ((((config["position"] == "over")) || ((dps == "fullScreen")))){ hiding = setTimeout(moveTimeout, 1000); view.skin.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler); } else { Animations.fade(clip, 1); }; break; default: try { clip.playButton.visible = true; clip.pauseButton.visible = false; } catch(err:Error) { }; if ((((config["position"] == "over")) || ((dps == "fullScreen")))){ Mouse.show(); Animations.fade(clip, 1); }; }; } private function outHandler(_arg1:MouseEvent):void{ if (((front) && (_arg1.target["icon"]))){ _arg1.target["icon"].transform.colorTransform = front; } else { _arg1.target.gotoAndPlay("out"); }; } private function overHandler(_arg1:MouseEvent):void{ if (((front) && (_arg1.target["icon"]))){ _arg1.target["icon"].transform.colorTransform = light; } else { _arg1.target.gotoAndPlay("over"); }; } private function moveTimeout():void{ if ((((((clip.mouseY < 3)) || ((clip.mouseY > (clip.height - 5))))) && ((clip.alpha == 1)))){ Animations.fade(clip, 0); Mouse.hide(); }; } private function clickHandler(_arg1:MouseEvent):void{ var _local2:String; _local2 = BUTTONS[_arg1.target.name]; if (((((!((blocking == true))) || ((_local2 == "FULLSCREEN")))) || ((_local2 == "MUTE")))){ view.sendEvent(_local2); }; } public function initializePlugin(_arg1:AbstractView):void{ view = _arg1; view.addControllerListener(ControllerEvent.RESIZE, resizeHandler); view.addModelListener(ModelEvent.LOADED, loadedHandler); view.addModelListener(ModelEvent.STATE, stateHandler); view.addModelListener(ModelEvent.TIME, timeHandler); view.addControllerListener(ControllerEvent.PLAYLIST, itemHandler); view.addControllerListener(ControllerEvent.ITEM, itemHandler); view.addControllerListener(ControllerEvent.MUTE, muteHandler); view.addControllerListener(ControllerEvent.VOLUME, volumeHandler); stacker = new Stacker(clip); setButtons(); setColors(); itemHandler(); loadedHandler(); muteHandler(); stateHandler(); timeHandler(); volumeHandler(); } private function upHandler(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Number; _local2 = 0; clip.stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler); scrubber.icon.stopDrag(); if ((((scrubber.name == "timeSlider")) && (view.playlist))){ _local2 = view.playlist[view.config["item"]]["duration"]; } else { if (scrubber.name == "volumeSlider"){ _local2 = 100; }; }; _local3 = (((scrubber.icon.x - scrubber.rail.x) / (scrubber.rail.width - scrubber.icon.width)) * _local2); view.sendEvent(SLIDERS[scrubber.name], Math.round(_local3)); scrubber = undefined; } private function resizeHandler(_arg1:ControllerEvent=null):void{ var wid:Number; var evt = _arg1; wid = config["width"]; clip.x = config["x"]; clip.y = config["y"]; clip.visible = config["visible"]; if ((((config["position"] == "over")) || ((view.config["fullscreen"] == true)))){ clip.x = (config["x"] + config["margin"]); clip.y = (((config["y"] + config["height"]) - config["margin"]) - config["size"]); wid = (config["width"] - (2 * config["margin"])); clip.back.alpha = 0.75; } else { if (config["position"] != "none"){ clip.back.alpha = 1; }; }; try { clip.fullscreenButton.visible = false; clip.normalscreenButton.visible = false; if (((clip.stage["displayState"]) && ((view.config["height"] > 40)))){ if (view.config["fullscreen"]){ clip.fullscreenButton.visible = false; clip.normalscreenButton.visible = true; } else { clip.fullscreenButton.visible = true; clip.normalscreenButton.visible = false; }; }; } catch(err:Error) { }; stacker.rearrange(wid); stateHandler(); fixTime(); Mouse.show(); } private function itemHandler(_arg1:ControllerEvent=null):void{ var evt = _arg1; try { if (((view.playlist) && ((view.playlist.length > 1)))){ clip.prevButton.visible = (clip.nextButton.visible = true); } else { clip.prevButton.visible = (clip.nextButton.visible = false); }; } catch(err:Error) { }; try { if (((view.playlist) && (view.playlist[view.config["item"]]["link"]))){ clip.linkButton.visible = true; } else { clip.linkButton.visible = false; }; } catch(err:Error) { }; timeHandler(); stacker.rearrange(); fixTime(); loadedHandler(new ModelEvent(ModelEvent.LOADED, {loaded:0, total:0})); } private function muteHandler(_arg1:ControllerEvent=null):void{ var evt = _arg1; if (view.config["mute"] == true){ try { clip.muteButton.visible = false; clip.unmuteButton.visible = true; } catch(err:Error) { }; try { clip.volumeSlider.mark.visible = false; clip.volumeSlider.icon.x = clip.volumeSlider.rail.x; } catch(err:Error) { }; } else { try { clip.muteButton.visible = true; clip.unmuteButton.visible = false; } catch(err:Error) { }; try { clip.volumeSlider.mark.visible = true; volumeHandler(); } catch(err:Error) { }; }; } private function moveHandler(_arg1:MouseEvent=null):void{ if (clip.alpha == 0){ Animations.fade(clip, 1); }; clearTimeout(hiding); hiding = setTimeout(moveTimeout, 1000); Mouse.show(); } public function addButton(_arg1:DisplayObject, _arg2:String, _arg3:Function):void{ var _local4:*; var _local5:AccessibilityProperties; var _local6:Number; if (clip["linkButton"].back){ _local4 = Draw.clone(clip["linkButton"]); _local4.name = (_arg2 + "Button"); _local4.visible = true; _local4.tabEnabled = true; _local4.tabIndex = 6; _local5 = new AccessibilityProperties(); _local5.name = (_arg2 + "Button"); _local4.accessibilityProperties = _local5; clip.addChild(_local4); _local6 = Math.round(((_local4.height - _arg1.height) / 2)); Draw.clear(_local4.icon); _local4.icon.addChild(_arg1); _arg1.x = (_arg1.y = 0); _local4.icon.x = (_local4.icon.y = _local6); _local4.back.width = (_arg1.width + (2 * _local6)); _local4.buttonMode = true; _local4.mouseChildren = false; _local4.addEventListener(MouseEvent.CLICK, _arg3); if (front){ _local4.icon.transform.colorTransform = front; _local4.addEventListener(MouseEvent.MOUSE_OVER, overHandler); _local4.addEventListener(MouseEvent.MOUSE_OUT, outHandler); }; stacker.insert(_local4, clip["linkButton"]); }; } private function timeHandler(_arg1:ModelEvent=null):void{ var dur:Number; var pos:Number; var pct:Number; var tsl:MovieClip; var xps:Number; var evt = _arg1; dur = 0; pos = 0; if (evt){ dur = evt.data.duration; pos = evt.data.position; } else { if (view.playlist){ dur = view.playlist[view.config["item"]]["duration"]; pos = 0; }; }; pct = (pos / dur); if (isNaN(pct)){ pct = 1; }; try { clip.elapsedText.text = Strings.digits(pos); clip.totalText.text = Strings.digits(dur); } catch(err:Error) { }; try { tsl = clip.timeSlider; xps = Math.round((pct * (tsl.rail.width - tsl.icon.width))); if (dur > 0){ clip.timeSlider.icon.visible = true; clip.timeSlider.mark.visible = true; if (!scrubber){ clip.timeSlider.icon.x = xps; clip.timeSlider.done.width = xps; }; clip.timeSlider.done.visible = true; } else { clip.timeSlider.icon.visible = false; clip.timeSlider.mark.visible = false; clip.timeSlider.done.visible = false; }; } catch(err:Error) { }; } } }//package com.jeroenwijering.plugins
Section 37
//Display (com.jeroenwijering.plugins.Display) package com.jeroenwijering.plugins { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.geom.*; import flash.net.*; import flash.utils.*; public class Display implements PluginInterface { public var config:Object; private var margins:Array; public var clip:MovieClip; private var loader:Loader; private var state:String; private var timeout:Number; private var view:AbstractView; private var ICONS:Array; public function Display():void{ config = {}; ICONS = new Array("playIcon", "errorIcon", "bufferIcon", "linkIcon", "muteIcon", "fullscreenIcon", "nextIcon"); super(); } private function stateHandler(_arg1:Event=null):void{ switch (view.config["state"]){ case ModelStates.PLAYING: if (view.config["mute"] == true){ setIcon("muteIcon"); } else { setIcon(); }; break; case ModelStates.BUFFERING: if (((_arg1) && ((_arg1["data"].oldstate == ModelStates.PLAYING)))){ timeout = setTimeout(setIcon, 1500, "bufferIcon"); } else { setIcon("bufferIcon"); }; break; case ModelStates.IDLE: if ((((view.config.displayclick == "none")) || (!(view.playlist)))){ setIcon(); } else { setIcon("playIcon"); }; break; default: setIcon((view.config.displayclick + "Icon")); break; }; } private function logoSetter():void{ margins = new Array(clip.logo.x, clip.logo.y, ((clip.back.width - clip.logo.x) - clip.logo.width), ((clip.back.height - clip.logo.y) - clip.logo.height)); if (clip.logo.width == 10){ Draw.clear(clip.logo); }; if (view.config["logo"]){ Draw.clear(clip.logo); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderHandler); clip.logo.addChild(loader); loader.load(new URLRequest(view.config["logo"])); }; } public function initializePlugin(_arg1:AbstractView):void{ var _local2:ColorTransform; view = _arg1; view.addControllerListener(ControllerEvent.ERROR, errorHandler); view.addControllerListener(ControllerEvent.MUTE, stateHandler); view.addControllerListener(ControllerEvent.PLAYLIST, stateHandler); view.addControllerListener(ControllerEvent.RESIZE, resizeHandler); view.addModelListener(ModelEvent.BUFFER, bufferHandler); view.addModelListener(ModelEvent.ERROR, errorHandler); view.addModelListener(ModelEvent.STATE, stateHandler); clip.media.mask = clip.masker; if (view.config["screencolor"]){ _local2 = new ColorTransform(); _local2.color = uint(("0x" + view.config["screencolor"].substr(-6))); clip.back.transform.colorTransform = _local2; }; if (view.config["displayclick"] != "none"){ clip.addEventListener(MouseEvent.CLICK, clickHandler); clip.buttonMode = true; clip.mouseChildren = false; }; if (clip.logo){ logoSetter(); }; stateHandler(); } private function errorHandler(_arg1:Object):void{ if (view.config["icons"] == true){ setIcon("errorIcon"); Draw.set(clip.errorIcon.txt, "text", _arg1.data.message); }; } private function clickHandler(_arg1:MouseEvent):void{ if (view.config["state"] == ModelStates.IDLE){ view.sendEvent("PLAY"); } else { if ((((view.config["state"] == ModelStates.PLAYING)) && ((view.config["mute"] == true)))){ view.sendEvent("MUTE"); } else { view.sendEvent(view.config["displayclick"]); }; }; } private function resizeHandler(_arg1:ControllerEvent):void{ var _local2:String; if (config["height"] > 0){ clip.visible = true; } else { clip.visible = false; }; Draw.pos(clip, config["x"], config["y"]); Draw.size(clip.back, config["width"], config["height"]); Draw.size(clip.masker, config["width"], config["height"]); for (_local2 in ICONS) { Draw.pos(clip[ICONS[_local2]], (config["width"] / 2), (config["height"] / 2)); }; if (clip.logo){ loaderHandler(); }; } private function loaderHandler(_arg1:Event=null):void{ if (margins[0] > margins[2]){ clip.logo.x = ((clip.back.width - margins[2]) - clip.logo.width); } else { clip.logo.x = margins[0]; }; if (margins[1] > margins[3]){ clip.logo.y = ((clip.back.height - margins[3]) - clip.logo.height); } else { clip.logo.y = margins[1]; }; } private function bufferHandler(_arg1:ModelEvent):void{ if (_arg1.data.percentage > 0){ Draw.set(clip.bufferIcon.txt, "text", Strings.zero(_arg1.data.percentage)); } else { Draw.set(clip.bufferIcon.txt, "text", ""); }; } private function setIcon(_arg1:String=undefined):void{ var _local2:String; clearTimeout(timeout); for (_local2 in ICONS) { if (clip[ICONS[_local2]]){ if ((((_arg1 == ICONS[_local2])) && ((view.config["icons"] == true)))){ clip[ICONS[_local2]].visible = true; } else { clip[ICONS[_local2]].visible = false; }; }; }; } } }//package com.jeroenwijering.plugins
Section 38
//Playlist (com.jeroenwijering.plugins.Playlist) package com.jeroenwijering.plugins { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import com.jeroenwijering.utils.*; import flash.geom.*; import flash.net.*; import flash.utils.*; public class Playlist implements PluginInterface { public var config:Object; private var active:Number; private var buttons:Array; public var clip:MovieClip; private var light:ColorTransform; private var buttonheight:Number; private var proportion:Number; private var image:Array; private var view:AbstractView; private var back:ColorTransform; private var front:ColorTransform; private var scrollInterval:Number; public function Playlist():void{ config = {}; super(); } private function stateHandler(_arg1:ModelEvent=null):void{ if (config["position"] == "over"){ if ((((((view.config["state"] == ModelStates.PLAYING)) || ((view.config["state"] == ModelStates.PAUSED)))) || ((view.config["state"] == ModelStates.BUFFERING)))){ clip.visible = false; } else { clip.visible = true; }; }; } private function soverHandler(_arg1:MouseEvent):void{ if (front){ clip.slider.icon.transform.colorTransform = light; } else { clip.slider.icon.gotoAndStop("over"); }; } private function scrollEase(_arg1:Number=-1, _arg2:Number=-1):void{ var _local3:MovieClip; _local3 = clip.slider; if (_arg1 != -1){ _local3.icon.y = Math.round((_arg1 - ((_arg1 - _local3.icon.y) / 1.5))); clip.list.y = Math.round((_arg2 - ((_arg2 - clip.list.y) / 1.5))); }; if ((((clip.list.y > 0)) || ((_local3.icon.y < _local3.rail.y)))){ clip.list.y = clip.masker.y; _local3.icon.y = _local3.rail.y; } else { if ((((clip.list.y < (clip.masker.height - clip.list.height))) || ((_local3.icon.y > ((_local3.rail.y + _local3.rail.height) - _local3.icon.height))))){ _local3.icon.y = ((_local3.rail.y + _local3.rail.height) - _local3.icon.height); clip.list.y = ((clip.masker.y + clip.masker.height) - clip.list.height); }; }; } private function scrollHandler():void{ var _local1:MovieClip; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = clip.slider; _local2 = (_local1.mouseY - _local1.rail.y); _local3 = (_local2 - (_local1.icon.height / 2)); _local4 = ((clip.masker.y + (clip.masker.height / 2)) - (proportion * _local2)); scrollEase(_local3, _local4); } private function playlistHandler(_arg1:ControllerEvent=null):void{ active = undefined; buildList(true); resizeHandler(); } private function outHandler(_arg1:MouseEvent):void{ var _local2:Number; var _local3:String; _local2 = Number(_arg1.target.name); if (((front) && (back))){ for (_local3 in view.playlist[_local2]) { if (((buttons[_local2].c[_local3]) && ((typeof(buttons[_local2].c[_local3]) == "object")))){ if (_local2 == active){ buttons[_local2].c[_local3].textColor = light.color; } else { buttons[_local2].c[_local3].textColor = front.color; }; }; }; buttons[_local2].c["back"].transform.colorTransform = back; }; if (_local2 == active){ buttons[_local2].c.gotoAndStop("active"); } else { buttons[_local2].c.gotoAndStop("out"); }; } private function overHandler(_arg1:MouseEvent):void{ var _local2:Number; var _local3:String; _local2 = Number(_arg1.target.name); if (((front) && (back))){ for (_local3 in view.playlist[_local2]) { if (((buttons[_local2].c[_local3]) && ((typeof(buttons[_local2].c[_local3]) == "object")))){ buttons[_local2].c[_local3].textColor = back.color; }; }; buttons[_local2].c["back"].transform.colorTransform = light; }; buttons[_local2].c.gotoAndStop("over"); } private function soutHandler(_arg1:MouseEvent):void{ if (front){ clip.slider.icon.transform.colorTransform = front; } else { clip.slider.icon.gotoAndStop("out"); }; } private function setColors():void{ if (view.config["backcolor"]){ back = new ColorTransform(); back.color = uint(("0x" + view.config["backcolor"].substr(-6))); clip.back.transform.colorTransform = back; clip.slider.back.transform.colorTransform = back; }; if (view.config["frontcolor"]){ front = new ColorTransform(); front.color = uint(("0x" + view.config["frontcolor"].substr(-6))); try { clip.slider.icon.transform.colorTransform = front; clip.slider.rail.transform.colorTransform = front; } catch(err:Error) { }; if (view.config["lightcolor"]){ light = new ColorTransform(); light.color = uint(("0x" + view.config["lightcolor"].substr(-6))); } else { light = front; }; }; } private function clickHandler(_arg1:MouseEvent):void{ view.sendEvent("item", Number(_arg1.target.name)); } public function initializePlugin(_arg1:AbstractView):void{ var vie = _arg1; view = vie; view.addControllerListener(ControllerEvent.ITEM, itemHandler); view.addControllerListener(ControllerEvent.PLAYLIST, playlistHandler); view.addControllerListener(ControllerEvent.RESIZE, resizeHandler); view.addModelListener(ModelEvent.STATE, stateHandler); buttonheight = clip.list.button.height; clip.list.button.visible = false; clip.list.mask = clip.masker; clip.list.addEventListener(MouseEvent.CLICK, clickHandler); clip.list.addEventListener(MouseEvent.MOUSE_OVER, overHandler); clip.list.addEventListener(MouseEvent.MOUSE_OUT, outHandler); clip.slider.buttonMode = true; clip.slider.mouseChildren = false; clip.slider.addEventListener(MouseEvent.MOUSE_DOWN, sdownHandler); clip.slider.addEventListener(MouseEvent.MOUSE_OVER, soverHandler); clip.slider.addEventListener(MouseEvent.MOUSE_OUT, soutHandler); clip.slider.visible = false; buttons = new Array(); try { image = new Array(clip.list.button.image.width, clip.list.button.image.height); } catch(err:Error) { }; if (clip.list.button["back"]){ setColors(); }; } private function setContents(_arg1:Number):void{ var itm:String; var img:MovieClip; var msk:Sprite; var ldr:Loader; var idx = _arg1; for (itm in view.playlist[idx]) { buttons[idx].c.gotoAndStop(0); if (((!(buttons[idx].c[itm])) || (!(view.playlist[idx][itm])))){ continue; } else { if (itm == "image"){ if (((!((config["thumbs"] == false))) && (((view.playlist[idx]["image"]) || (view.playlist[idx]["playlist.image"]))))){ img = buttons[idx].c.image; msk = Draw.rect(buttons[idx].c, "0xFF0000", img.width, img.height, img.x, img.y); ldr = new Loader(); img.mask = msk; img.addChild(ldr); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderHandler); if (view.playlist[idx]["playlist.image"]){ ldr.load(new URLRequest(view.playlist[idx]["playlist.image"])); } else { ldr.load(new URLRequest(view.playlist[idx]["image"])); }; }; } else { if (itm == "duration"){ if (view.playlist[idx][itm] > 0){ buttons[idx].c[itm].text = Strings.digits(view.playlist[idx][itm]); if (front){ buttons[idx].c[itm].textColor = front.color; }; }; } else { try { if (itm == "description"){ buttons[idx].c[itm].htmlText = view.playlist[idx][itm]; } else { buttons[idx].c[itm].text = view.playlist[idx][itm]; }; if (front){ buttons[idx].c[itm].textColor = front.color; }; } catch(e:Error) { }; }; }; }; }; if (((buttons[idx].c["image"]) && (((!(view.playlist[idx]["image"])) || ((config["thumbs"] == false)))))){ buttons[idx].c["image"].visible = false; }; if (back){ buttons[idx].c["back"].transform.colorTransform = back; }; } private function buildSlider():void{ var _local1:MovieClip; var _local2:Number; _local1 = clip.slider; _local1.visible = true; _local1.x = (clip.back.width - _local1.width); _local2 = ((clip.back.height - _local1.height) - _local1.y); _local1.back.height = (_local1.back.height + _local2); _local1.rail.height = (_local1.rail.height + _local2); _local1.icon.height = Math.round((_local1.rail.height / proportion)); } private function supHandler(_arg1:MouseEvent):void{ clearInterval(scrollInterval); clip.stage.removeEventListener(MouseEvent.MOUSE_UP, supHandler); } private function sdownHandler(_arg1:MouseEvent):void{ clearInterval(scrollInterval); clip.stage.addEventListener(MouseEvent.MOUSE_UP, supHandler); scrollHandler(); scrollInterval = setInterval(scrollHandler, 50); } private function itemHandler(_arg1:ControllerEvent):void{ var idx:Number; var itm:String; var act:String; var evt = _arg1; idx = view.config["item"]; clearInterval(scrollInterval); if (proportion > 1.01){ scrollInterval = setInterval(scrollEase, 50, ((idx * buttonheight) / proportion), ((-(idx) * buttonheight) + clip.masker.y)); }; if (light){ for (itm in view.playlist[idx]) { if (buttons[idx].c[itm]){ try { buttons[idx].c[itm].textColor = light.color; } catch(err:Error) { }; }; }; }; if (back){ buttons[idx].c["back"].transform.colorTransform = back; }; buttons[idx].c.gotoAndStop("active"); if (!isNaN(active)){ if (front){ for (act in view.playlist[active]) { if (buttons[active].c[act]){ try { buttons[active].c[act].textColor = front.color; } catch(err:Error) { }; }; }; }; buttons[active].c.gotoAndStop("out"); }; active = idx; } private function buildList(_arg1:Boolean):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:MovieClip; var _local7:Stacker; if (!view.playlist){ return; }; _local2 = clip.back.width; _local3 = clip.back.height; clip.masker.height = _local3; clip.masker.width = _local2; proportion = ((view.playlist.length * buttonheight) / _local3); if (proportion > 1.01){ _local2 = (_local2 - clip.slider.width); buildSlider(); } else { clip.slider.visible = false; }; if (_arg1){ clip.list.y = clip.masker.y; _local5 = 0; while (_local5 < buttons.length) { clip.list.removeChild(buttons[_local5].c); _local5++; }; buttons = new Array(); } else { if (proportion > 1){ scrollEase(); }; }; _local4 = 0; while (_local4 < view.playlist.length) { if (_arg1){ _local6 = Draw.clone(clip.list.button, true); _local7 = new Stacker(_local6); _local6.y = (_local4 * buttonheight); _local6.buttonMode = true; _local6.mouseChildren = false; _local6.name = _local4.toString(); buttons.push({c:_local6, s:_local7}); setContents(_local4); }; buttons[_local4].s.rearrange(_local2); _local4++; }; } private function resizeHandler(_arg1:ControllerEvent=null):void{ clip.x = config["x"]; clip.y = config["y"]; clip.back.width = config["width"]; clip.back.height = config["height"]; buildList(false); if (config["position"] == "over"){ clip.back.alpha = 0.7; stateHandler(); } else { clip.back.alpha = 1; clip.visible = config["visible"]; }; } private function loaderHandler(_arg1:Event):void{ var _local2:Loader; _local2 = Loader(_arg1.target.loader); Stretcher.stretch(_local2, image[0], image[1], Stretcher.FILL); } } }//package com.jeroenwijering.plugins
Section 39
//Rightclick (com.jeroenwijering.plugins.Rightclick) package com.jeroenwijering.plugins { import com.jeroenwijering.events.*; import flash.events.*; import flash.ui.*; import flash.net.*; public class Rightclick implements PluginInterface { public var config:Object; private var view:AbstractView; private var about:ContextMenuItem; private var context:ContextMenu; private var fullscreen:ContextMenuItem; private var stretching:ContextMenuItem; public function Rightclick():void{ config = {}; super(); context = new ContextMenu(); context.hideBuiltInItems(); } public function initializePlugin(_arg1:AbstractView):void{ var vie = _arg1; view = vie; view.skin.contextMenu = context; try { if (view.skin.stage["displayState"]){ fullscreen = new ContextMenuItem("Toggle fullscreen..."); addItem(fullscreen, fullscreenHandler); }; } catch(err:Error) { }; stretching = new ContextMenuItem((("Stretching is " + view.config["stretching"]) + "...")); addItem(stretching, stretchHandler); if (view.config["abouttext"]){ about = new ContextMenuItem((view.config["abouttext"] + "...")); } else { about = new ContextMenuItem((("About JW Player " + view.config["version"]) + "...")); }; addItem(about, aboutHandler); } private function stretchHandler(_arg1:ContextMenuEvent):void{ var _local2:Array; var _local3:Number; _local2 = new Array("uniform", "fill", "exactfit", "none"); _local3 = 0; while (_local3 < _local2.length) { if (_local2[_local3] == view.config["stretching"]){ break; }; _local3++; }; if ((_local3 == (_local2.length - 1))){ _local3 = 0; } else { _local3++; }; view.config["stretching"] = _local2[_local3]; stretching.caption = (("Stretching is " + view.config["stretching"]) + "..."); view.sendEvent(ViewEvent.REDRAW); } private function aboutHandler(_arg1:ContextMenuEvent):void{ navigateToURL(new URLRequest(view.config["aboutlink"]), "_blank"); } public function addItem(_arg1:ContextMenuItem, _arg2:Function):void{ _arg1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, _arg2); _arg1.separatorBefore = true; context.customItems.push(_arg1); } private function fullscreenHandler(_arg1:ContextMenuEvent):void{ view.sendEvent(ViewEvent.FULLSCREEN); } } }//package com.jeroenwijering.plugins
Section 40
//Watermark (com.jeroenwijering.plugins.Watermark) package com.jeroenwijering.plugins { import com.jeroenwijering.events.*; import flash.display.*; import flash.events.*; import fl.transitions.*; import fl.transitions.easing.*; import com.jeroenwijering.utils.*; import flash.net.*; import flash.utils.*; public dynamic class Watermark extends MovieClip implements PluginInterface { public var clip:MovieClip; private var watermarkTimeout:Number;// = 3000 private var config:Object; private var view:AbstractView; private var showing:Boolean;// = false private var clickURL:String;// = "http://www.longtailvideo.com/players/jw-flv-player/" private var alphas:Object; private var hidingTimeout:uint; public function Watermark(){ config = {}; watermarkTimeout = 3000; alphas = {over:1, out:0.5}; clickURL = "http://www.longtailvideo.com/players/jw-flv-player/"; showing = false; super(); this.alpha = alphas["out"]; this.buttonMode = true; addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); addEventListener(MouseEvent.CLICK, clickHandler); } public function initializePlugin(_arg1:AbstractView):void{ view = _arg1; this.visible = false; clip.addChild(this); view.addModelListener(ModelEvent.STATE, stateHandler); view.addControllerListener(ControllerEvent.RESIZE, resizeHandler); } private function stateHandler(_arg1:ModelEvent):void{ switch (_arg1.data.newstate){ case ModelStates.BUFFERING: clearTimeout(hidingTimeout); showWatermark(); break; }; } private function mouseOutHandler(_arg1:MouseEvent):void{ this.alpha = alphas["out"]; } private function clickHandler(_arg1:MouseEvent):void{ navigateToURL(new URLRequest(clickURL), "_self"); } private function hideWatermark():void{ showing = false; clip.mouseEnabled = false; TransitionManager.start(this, {type:Fade, direction:Transition.OUT, duration:0.3, easing:Regular.easeIn}); } private function showWatermark():void{ if (!showing){ showing = true; TransitionManager.start(this, {type:Fade, direction:Transition.IN, duration:0.3, easing:Regular.easeIn}); }; hidingTimeout = setTimeout(hideWatermark, watermarkTimeout); clip.mouseEnabled = true; } private function mouseOverHandler(_arg1:MouseEvent):void{ this.alpha = alphas["over"]; } private function resizeHandler(_arg1:ControllerEvent):void{ config = view.getPluginConfig(this); this.x = (config["x"] + 10); this.y = ((config["height"] - this.height) - 12); } } }//package com.jeroenwijering.plugins
Section 41
//Animations (com.jeroenwijering.utils.Animations) package com.jeroenwijering.utils { import flash.display.*; import flash.events.*; public class Animations { public static function fade(_arg1:MovieClip, _arg2:Number=1, _arg3:Number=0.2):void{ if (_arg1.alpha > _arg2){ _arg1.spd = -(Math.abs(_arg3)); } else { _arg1.spd = Math.abs(_arg3); }; _arg1.end = _arg2; _arg1.addEventListener(Event.ENTER_FRAME, fadeHandler); } private static function fadeHandler(_arg1:Event):void{ var _local2:*; _local2 = MovieClip(_arg1.target); if ((((((_local2.alpha >= (_local2.end - _local2.spd))) && ((_local2.spd > 0)))) || ((((_local2.alpha <= (_local2.end + _local2.spd))) && ((_local2.spd < 0)))))){ _local2.removeEventListener(Event.ENTER_FRAME, fadeHandler); _local2.alpha = _local2.end; if (_local2.end == 0){ _local2.visible = false; }; } else { _local2.visible = true; _local2.alpha = (_local2.alpha + _local2.spd); }; } private static function writeHandler(_arg1:Event):void{ var _local2:MovieClip; var _local3:Number; _local2 = MovieClip(_arg1.target); _local3 = Math.floor(((_local2.str.length - _local2.tf.text.length) / _local2.spd)); _local2.tf.text = _local2.str.substr(0, (_local2.str.length - _local3)); if (_local2.tf.text == _local2.str){ _local2.tf.htmlText = _local2.str; _local2.removeEventListener(Event.ENTER_FRAME, easeHandler); }; } private static function easeHandler(_arg1:Event):void{ var _local2:MovieClip; _local2 = MovieClip(_arg1.target); if ((((Math.abs((_local2.x - _local2.xps)) < 1)) && ((Math.abs((_local2.y - _local2.yps)) < 1)))){ _local2.removeEventListener(Event.ENTER_FRAME, easeHandler); _local2.x = _local2.xps; _local2.y = _local2.yps; } else { _local2.x = (_local2.xps - ((_local2.xps - _local2.x) / _local2.spd)); _local2.y = (_local2.yps - ((_local2.yps - _local2.y) / _local2.spd)); }; } public static function ease(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number=2):void{ if (!_arg2){ _arg1.xps = _arg1.x; } else { _arg1.xps = _arg2; }; if (!_arg3){ _arg1.yps = _arg1.y; } else { _arg1.yps = _arg3; }; _arg1.spd = _arg4; _arg1.addEventListener(Event.ENTER_FRAME, easeHandler); } public static function write(_arg1:MovieClip, _arg2:String, _arg3:Number=1.5):void{ _arg1.str = _arg2; _arg1.spd = _arg3; _arg1.tf.text = ""; _arg1.addEventListener(Event.ENTER_FRAME, writeHandler); } } }//package com.jeroenwijering.utils
Section 42
//Configger (com.jeroenwijering.utils.Configger) package com.jeroenwijering.utils { import flash.display.*; import flash.events.*; import flash.net.*; public class Configger extends EventDispatcher { private var config:Object; private var reference:Sprite; private var loader:URLLoader; public function Configger(_arg1:Sprite):void{ reference = _arg1; } private function loadCookies(){ var _local1:SharedObject; _local1 = SharedObject.getLocal("com.jeroenwijering", "/"); compareWrite(_local1.data); loadFlashvars(); } private function loadXML(_arg1:String):void{ var url = _arg1; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, xmlHandler); try { loader.load(new URLRequest(url)); } catch(err:Error) { loadCookies(); }; } private function compareWrite(_arg1:Object):void{ var _local2:String; for (_local2 in _arg1) { config[_local2.toLowerCase()] = Strings.serialize(_arg1[_local2.toLowerCase()]); }; } private function loadFlashvars():void{ compareWrite(reference.root.loaderInfo.parameters); dispatchEvent(new Event(Event.COMPLETE)); } public function load(_arg1:Object):void{ var _local2:String; config = _arg1; _local2 = reference.root.loaderInfo.parameters["config"]; if (_local2){ loadXML(Strings.decode(_local2)); } else { loadCookies(); }; } private function xmlHandler(_arg1:Event):void{ var _local2:XML; var _local3:Object; var _local4:XML; _local2 = XML(_arg1.currentTarget.data); _local3 = new Object(); for each (_local4 in _local2.children()) { _local3[_local4.name()] = _local4.text(); }; compareWrite(_local3); loadCookies(); } public static function saveCookie(_arg1:String, _arg2:Object){ var _local3:SharedObject; _local3 = SharedObject.getLocal("com.jeroenwijering", "/"); _local3.data[_arg1] = _arg2; _local3.flush(); } } }//package com.jeroenwijering.utils
Section 43
//Debug (com.jeroenwijering.utils.Debug) package com.jeroenwijering.utils { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.net.*; import flash.system.*; public class Debug { private static const MEMORY_OPERATION:String = "debugMemory"; public static const NAME:String = "Debug"; private static const ERROR_OPERATION:String = "debugError"; private static const CLEAR_OPERATION:String = "debugClear"; private static const BITMAP_OPERATION:String = "debugBitmapData"; public static const VERSION:String = "0.74"; private static const TYPE:String = "app"; private static const ARRAY_OPERATION:String = "debugArray"; private static const DOMAIN:String = "com.carlcalderon.Arthropod"; private static const OBJECT_OPERATION:String = "debugObject"; private static const WARNING_OPERATION:String = "debugWarning"; private static const CONNECTION:String = "arthropod"; private static const CHECK:String = ".161E714B6C1A76DE7B9865F88B32FCCE8FABA7B5.1"; private static const LOG_OPERATION:String = "debug"; public static var LIGHT_BLUE:uint = 0xCCCC; public static var secureDomain:String = "*"; public static var password:String = "CDC309AF"; public static var allowLog:Boolean = true; public static var BLUE:uint = 6710988; public static var GREEN:uint = 0xCC00; public static var ignoreStatus:Boolean = true; public static var RED:uint = 0xCC0000; public static var secure:Boolean = false; public static var YELLOW:uint = 0xCCCC00; public static var PINK:uint = 0xCC00CC; private static var lc:LocalConnection = new LocalConnection(); private static var hasEventListeners:Boolean = false; public static function memory():Boolean{ return (send(MEMORY_OPERATION, System.totalMemory, null)); } public static function error(_arg1):Boolean{ return (send(ERROR_OPERATION, String(_arg1), 0xCC0000)); } public static function warning(_arg1):Boolean{ return (send(WARNING_OPERATION, String(_arg1), 0xCCCC00)); } private static function send(_arg1:String, _arg2, _arg3):Boolean{ var operation = _arg1; var value = _arg2; var prop = _arg3; if (!secure){ lc.allowInsecureDomain("*"); } else { lc.allowDomain(secureDomain); }; if (!hasEventListeners){ if (ignoreStatus){ lc.addEventListener(StatusEvent.STATUS, ignore); } else { lc.addEventListener(StatusEvent.STATUS, status); }; hasEventListeners = true; }; if (allowLog){ try { lc.send((((((TYPE + "#") + DOMAIN) + CHECK) + ":") + CONNECTION), operation, password, value, prop); return (true); } catch(e) { return (false); }; }; return (false); } public static function bitmap(_arg1, _arg2:String=null):Boolean{ var _local3:BitmapData; var _local4:Matrix; var _local5:Number; var _local6:Rectangle; _local3 = new BitmapData(100, 100, true, 0xFFFFFF); _local4 = new Matrix(); _local5 = (100 / ((_arg1.width)>=_arg1.height) ? _arg1.width : _arg1.height); _local4.scale(_local5, _local5); _local3.draw(_arg1, _local4, null, null, null, true); _local6 = new Rectangle(0, 0, Math.floor((_arg1.width * _local5)), Math.floor((_arg1.height * _local5))); return (send(BITMAP_OPERATION, _local3.getPixels(_local6), {bounds:_local6, lbl:_arg2})); } public static function object(_arg1):Boolean{ return (send(OBJECT_OPERATION, _arg1, null)); } public static function clear():Boolean{ return (send(CLEAR_OPERATION, 0, 0)); } private static function ignore(_arg1:StatusEvent):void{ } public static function log(_arg1, _arg2:uint=0xFEFEFE):Boolean{ return (send(LOG_OPERATION, String(_arg1), _arg2)); } public static function array(_arg1:Array):Boolean{ return (send(ARRAY_OPERATION, _arg1, null)); } public static function snapshot(_arg1:Stage, _arg2:String=null):Boolean{ if (_arg1){ return (bitmap(_arg1, _arg2)); }; return (false); } private static function status(_arg1:StatusEvent):void{ trace(("Arthropod status:\n" + _arg1.toString())); } } }//package com.jeroenwijering.utils
Section 44
//Draw (com.jeroenwijering.utils.Draw) package com.jeroenwijering.utils { import flash.display.*; import flash.text.*; public class Draw { public static function size(_arg1:DisplayObject, _arg2:Number, _arg3:Number):void{ var obj = _arg1; var wid = _arg2; var hei = _arg3; try { obj.width = Math.round(wid); obj.height = Math.round(hei); } catch(err:Error) { }; } public static function set(_arg1:DisplayObject, _arg2:String, _arg3:Object){ var obj = _arg1; var prp = _arg2; var val = _arg3; try { obj[prp] = val; } catch(err:Error) { }; } public static function pos(_arg1:DisplayObject, _arg2:Number, _arg3:Number):void{ var obj = _arg1; var xps = _arg2; var yps = _arg3; try { obj.x = Math.round(xps); obj.y = Math.round(yps); } catch(err:Error) { }; } public static function text(_arg1:Sprite, _arg2:String, _arg3:String, _arg4:Number=12, _arg5:String="Arial", _arg6:Boolean=false, _arg7:Number=100, _arg8:Number=0, _arg9:Number=0, _arg10:String="left"):TextField{ var _local11:TextField; var _local12:TextFormat; _local11 = new TextField(); _local12 = new TextFormat(); _local11.autoSize = "left"; _local11.selectable = false; if (_arg6){ _local11.width = _arg7; _local11.multiline = true; _local11.wordWrap = true; } else { _local11.autoSize = _arg10; }; _local11.x = _arg8; _local11.y = _arg9; _local12.font = _arg5; _local12.color = uint(("0x" + _arg3)); _local12.size = _arg4; _local12.underline = false; _local11.defaultTextFormat = _local12; _local11.text = _arg2; _arg1.addChild(_local11); return (_local11); } public static function rect(_arg1:Sprite, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0, _arg7:Number=1):Sprite{ var _local8:Sprite; _local8 = new Sprite(); _local8.x = _arg5; _local8.y = _arg6; _local8.graphics.beginFill(uint(("0x" + _arg2)), _arg7); _local8.graphics.drawRect(0, 0, _arg3, _arg4); _arg1.addChild(_local8); return (_local8); } public static function clear(_arg1:DisplayObjectContainer):void{ var _local2:Number; var _local3:Number; _local2 = _arg1.numChildren; _local3 = 0; while (_local3 < _local2) { _arg1.removeChildAt(0); _local3++; }; _arg1.scaleX = (_arg1.scaleY = 1); } public static function clone(_arg1:Sprite, _arg2:Boolean=false):MovieClip{ var _local3:Class; var _local4:*; var _local5:*; _local3 = Object(_arg1).constructor; _local4 = new (_local3); _local4.transform = _arg1.transform; _local4.filters = _arg1.filters; _local4.cacheAsBitmap = _arg1.cacheAsBitmap; _local4.opaqueBackground = _arg1.opaqueBackground; if (_arg2 == true){ _local5 = _arg1.parent.getChildIndex(_arg1); _arg1.parent.addChildAt(_local4, (_local5 + 1)); }; return (_local4); } } }//package com.jeroenwijering.utils
Section 45
//NetClient (com.jeroenwijering.utils.NetClient) package com.jeroenwijering.utils { public class NetClient { private var callback:Object; public function NetClient(_arg1:Object):void{ callback = _arg1; } public function onHeaderData(_arg1:Object):void{ var _local2:Object; var _local3:String; var _local4:String; var _local5:String; var _local6:String; _local2 = new Object(); _local3 = "-"; _local4 = "_"; for (_local5 in _arg1) { _local6 = _local5.replace("-", "_"); _local2[_local6] = _arg1[_local5]; }; forward(_local2, "headerdata"); } public function onImageData(_arg1:Object):void{ forward(_arg1, "imagedata"); } public function onLastSecond(_arg1:Object):void{ forward(_arg1, "lastsecond"); } private function forward(_arg1:Object, _arg2:String):void{ var _local3:Object; var _local4:*; _arg1["type"] = _arg2; _local3 = new Object(); for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; callback.onData(_local3); } public function onXMPData(... _args):void{ forward(_args[0], "xmp"); } public function onCaption(_arg1:String, _arg2:Number):void{ forward({captions:_arg1, speaker:_arg2}, "caption"); } public function onMetaData(_arg1:Object):void{ forward(_arg1, "metadata"); } public function onPlayStatus(_arg1:Object):void{ if (_arg1.code == "NetStream.Play.Complete"){ forward(_arg1, "complete"); } else { forward(_arg1, "playstatus"); }; } public function onBWCheck(... _args):Number{ return (0); } public function onCaptionInfo(_arg1:Object):void{ forward(_arg1, "captioninfo"); } public function onBWDone(... _args):void{ if (_args.length > 0){ forward({bandwidth:_args[0]}, "bandwidth"); }; } public function close(... _args):void{ forward({close:true}, "close"); } public function onID3(... _args):void{ forward(_args[0], "id3"); } public function RtmpSampleAccess(_arg1:Object):void{ forward(_arg1, "rtmpsampleaccess"); } public function onCuePoint(_arg1:Object):void{ forward(_arg1, "cuepoint"); } public function onFCSubscribe(_arg1:Object):void{ forward(_arg1, "fcsubscribe"); } public function onSDES(... _args):void{ forward(_args[0], "sdes"); } public function onTextData(_arg1:Object):void{ forward(_arg1, "textdata"); } } }//package com.jeroenwijering.utils
Section 46
//Randomizer (com.jeroenwijering.utils.Randomizer) package com.jeroenwijering.utils { public class Randomizer { private var todo:Array; private var done:Array; private var original:Array; public function Randomizer(_arg1:Number):void{ var _local2:Number; super(); original = new Array(); todo = new Array(); done = new Array(); _local2 = 0; while (_local2 < _arg1) { original.push(_local2); _local2++; }; } public function pick():Number{ var _local1:Number; var _local2:Number; var _local3:Number; if (todo.length == 0){ _local3 = 0; while (_local3 < original.length) { todo.push(_local3); _local3++; }; }; _local1 = Math.floor((Math.random() * todo.length)); _local2 = todo[_local1]; done.push(todo.splice(_local1, 1)[0]); return (_local2); } public function get length():Number{ return (todo.length); } public function back():Number{ if (done.length < 2){ return (pick()); }; todo.push(done.pop()); return (done[(done.length - 1)]); } } }//package com.jeroenwijering.utils
Section 47
//Stacker (com.jeroenwijering.utils.Stacker) package com.jeroenwijering.utils { import flash.display.*; public class Stacker { private var _width:Number; private var stack:Array; public var clip:MovieClip; private var latest:Number;// = 0 public function Stacker(_arg1:MovieClip):void{ latest = 0; super(); clip = _arg1; analyze(); } public function get width():Number{ return (_width); } private function analyze():void{ var _local1:Number; var _local2:DisplayObject; _width = clip.width; stack = new Array(); _local1 = 0; while (_local1 < clip.numChildren) { _local2 = clip.getChildAt(_local1); stack.push({c:_local2, x:_local2.x, n:_local2.name, w:_local2.width}); _local1++; }; stack.sortOn(["x", "n"], [Array.NUMERIC, Array.CASEINSENSITIVE]); } public function insert(_arg1:MovieClip, _arg2:MovieClip):void{ var _local3:Number; var _local4:Number; _local3 = 0; _local4 = 0; while (_local4 < stack.length) { if (stack[_local4].w >= _width){ stack[_local4].w = (stack[_local4].w + _arg1.width); }; if ((((stack[_local4].c == _arg2)) && (!(_local3)))){ _local3 = _local4; stack.splice(_local4, 0, {c:_arg1, x:stack[_local4].x, n:_arg1.name, w:_arg1.width}); } else { if (_local3){ stack[_local4].x = (stack[_local4].x + _arg1.width); }; }; _local4++; }; _width = (_width + _arg1.width); rearrange(); } public function rearrange(_arg1:Number=undefined):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; if (_arg1){ latest = _arg1; }; _local2 = (latest - width); _local3 = 0; _local4 = 0; while (_local4 < stack.length) { if (stack[_local4].x > (width / 2)){ stack[_local4].c.x = (stack[_local4].x + _local2); if ((((stack[_local4].c.visible == false)) && ((overlaps(_local4) == false)))){ if (_local4 < (stack.length - 1)){ _local2 = (_local2 - (((stack[_local4].w + stack[_local4].x) - stack[(_local4 - 1)].x) - stack[(_local4 - 1)].w)); } else { _local2 = (_local2 - (((stack[_local4].w + stack[_local4].x) - stack[(_local4 - 1)].x) - stack[(_local4 - 1)].w)); }; }; } else { stack[_local4].c.x = (stack[_local4].x - _local3); if ((((stack[_local4].c.visible == false)) && ((overlaps(_local4) == false)))){ if (stack[(_local4 - 1)].w > (width / 4)){ _local3 = (_local3 + (stack[_local4].w + stack[_local4].x)); } else { _local3 = (_local3 + (((stack[_local4].w + stack[_local4].x) - stack[(_local4 - 1)].x) - stack[(_local4 - 1)].w)); }; }; }; if (stack[_local4].w > (width / 4)){ stack[_local4].c.width = Math.abs(((stack[_local4].w + _local2) + _local3)); }; _local4++; }; _local5 = ((latest - width) - _local2); if (_local5 > 0){ _local6 = 0; while (_local6 < stack.length) { if (stack[_local6].x > (width / 2)){ stack[_local6].c.x = (stack[_local6].c.x + _local5); }; if ((((stack[_local6].w > (width / 4))) && ((stack[_local6].w < width)))){ stack[_local6].c.width = (stack[_local6].c.width + _local5); }; _local6++; }; }; } private function overlaps(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = stack[_arg1].x; _local3 = (stack[_arg1].x + stack[_arg1].w); _local4 = 0; while (_local4 < stack.length) { if (((((((((!((_local4 == _arg1))) && ((stack[_local4].c.visible == true)))) && ((stack[_local4].w < _width)))) && ((stack[_local4].x < _local3)))) && (((stack[_local4].x + stack[_local4].w) > _local2)))){ return (true); }; _local4++; }; return (false); } } }//package com.jeroenwijering.utils
Section 48
//Stretcher (com.jeroenwijering.utils.Stretcher) package com.jeroenwijering.utils { import flash.display.*; public class Stretcher { public static var EXACTFIT:String = "exactfit"; public static var FILL:String = "fill"; public static var NONE:String = "none"; public static var UNIFORM:String = "uniform"; public static function stretch(_arg1:DisplayObject, _arg2:Number, _arg3:Number, _arg4:String="uniform"):void{ var _local5:Number; var _local6:Number; _local5 = (_arg2 / _arg1.width); _local6 = (_arg3 / _arg1.height); switch (_arg4.toLowerCase()){ case "exactfit": _arg1.width = _arg2; _arg1.height = _arg3; break; case "fill": if (_local5 > _local6){ _arg1.width = (_arg1.width * _local5); _arg1.height = (_arg1.height * _local5); } else { _arg1.width = (_arg1.width * _local6); _arg1.height = (_arg1.height * _local6); }; break; case "none": _arg1.scaleX = 1; _arg1.scaleY = 1; break; case "uniform": if (_local5 > _local6){ _arg1.width = (_arg1.width * _local6); _arg1.height = (_arg1.height * _local6); } else { _arg1.width = (_arg1.width * _local5); _arg1.height = (_arg1.height * _local5); }; break; }; _arg1.x = Math.round(((_arg2 / 2) - (_arg1.width / 2))); _arg1.y = Math.round(((_arg3 / 2) - (_arg1.height / 2))); _arg1.width = Math.ceil(_arg1.width); _arg1.height = Math.ceil(_arg1.height); } } }//package com.jeroenwijering.utils
Section 49
//Strings (com.jeroenwijering.utils.Strings) package com.jeroenwijering.utils { public class Strings { public static function serialize(_arg1:String):Object{ if (_arg1 == null){ return (null); }; if (_arg1 == "true"){ return (true); }; if (_arg1 == "false"){ return (false); }; if (((isNaN(Number(_arg1))) || ((_arg1.length > 5)))){ return (Strings.decode(_arg1)); }; return (Number(_arg1)); } public static function digits(_arg1:Number):String{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:String; _local2 = Math.floor((_arg1 / 3600)); _local3 = Math.floor((_arg1 / 60)); _local4 = Math.floor((_arg1 % 60)); _local5 = ((Strings.zero(_local3) + ":") + Strings.zero(_local4)); if (_local2 > 0){ _local3 = (_local3 - (_local2 * 60)); _local5 = ((((Strings.zero(_local2) + ":") + Strings.zero(_local3)) + ":") + Strings.zero(_local4)); }; return (_local5); } public static function zero(_arg1:Number):String{ if (_arg1 < 10){ return (("0" + _arg1)); }; return (("" + _arg1)); } public static function strip(_arg1:String):String{ var _local2:Array; var _local3:Number; var _local4:Number; _local2 = _arg1.split("\n"); _arg1 = _local2.join(""); _local2 = _arg1.split("\r"); _arg1 = _local2.join(""); _local3 = _arg1.indexOf("<"); for (;_local3 != -1;(_arg1 = ((_arg1.substr(0, _local3) + " ") + _arg1.substr((_local4 + 1), _arg1.length))), (_local3 = _arg1.indexOf("<", _local3))) { _local4 = _arg1.indexOf(">", (_local3 + 1)); if ((_local4 == -1)){ _local4 = (_arg1.length - 1); continue; }; }; return (_arg1); } public static function decode(_arg1:String):String{ if (_arg1.indexOf("asfunction") == -1){ return (unescape(_arg1)); }; return (""); } public static function seconds(_arg1:String):Number{ var _local2:Array; var _local3:Number; _arg1 = _arg1.replace(",", "."); _local2 = _arg1.split(":"); _local3 = 0; if (_arg1.substr(-1) == "s"){ _local3 = Number(_arg1.substr(0, (_arg1.length - 1))); } else { if (_arg1.substr(-1) == "m"){ _local3 = (Number(_arg1.substr(0, (_arg1.length - 1))) * 60); } else { if (_arg1.substr(-1) == "h"){ _local3 = (Number(_arg1.substr(0, (_arg1.length - 1))) * 3600); } else { if (_local2.length > 1){ _local3 = Number(_local2[(_local2.length - 1)]); _local3 = (_local3 + (Number(_local2[(_local2.length - 2)]) * 60)); if (_local2.length == 3){ _local3 = (_local3 + (Number(_local2[(_local2.length - 3)]) * 3600)); }; } else { _local3 = Number(_arg1); }; }; }; }; return (_local3); } } }//package com.jeroenwijering.utils
Section 50
//TEA (com.jeroenwijering.utils.TEA) package com.jeroenwijering.utils { public class TEA { private static function strToChars(_arg1:String):Array{ var _local2:Array; var _local3:Number; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.length) { _local2.push(_arg1.charCodeAt(_local3)); _local3++; }; return (_local2); } private static function charsToHex(_arg1:Array):String{ var _local2:String; var _local3:Array; var _local4:Number; _local2 = new String(""); _local3 = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); _local4 = 0; while (_local4 < _arg1.length) { _local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)])); _local4++; }; return (_local2); } public static function encrypt(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:Array; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local3 = charsToLongs(strToChars(_arg1)); _local4 = charsToLongs(strToChars(_arg2)); _local5 = _local3.length; if (_local5 == 0){ return (""); }; if (_local5 == 1){ var _temp1 = _local5; _local5 = (_local5 + 1); var _local14 = _temp1; _local3[_local14] = 0; }; _local7 = _local3[(_local5 - 1)]; _local8 = _local3[0]; _local9 = 2654435769; _local12 = Math.floor((6 + (52 / _local5))); _local13 = 0; while (_local12-- > 0) { _local13 = (_local13 + _local9); _local11 = ((_local13 >>> 2) & 3); _local6 = 0; while (_local6 < (_local5 - 1)) { _local8 = _local3[(_local6 + 1)]; _local10 = ((((_local7 >>> 5) ^ (_local8 << 2)) + ((_local8 >>> 3) ^ (_local7 << 4))) ^ ((_local13 ^ _local8) + (_local4[((_local6 & 3) ^ _local11)] ^ _local7))); _local7 = (_local3[_local6] = (_local3[_local6] + _local10)); _local6++; }; _local8 = _local3[0]; _local10 = ((((_local7 >>> 5) ^ (_local8 << 2)) + ((_local8 >>> 3) ^ (_local7 << 4))) ^ ((_local13 ^ _local8) + (_local4[((_local6 & 3) ^ _local11)] ^ _local7))); _local7 = (_local3[(_local5 - 1)] = (_local3[(_local5 - 1)] + _local10)); }; return (charsToHex(longsToChars(_local3))); } private static function longToChars(_arg1:Number):Array{ var _local2:Array; _local2 = new Array(); _local2.push((_arg1 & 0xFF), ((_arg1 >>> 8) & 0xFF), ((_arg1 >>> 16) & 0xFF), ((_arg1 >>> 24) & 0xFF)); return (_local2); } private static function hexToChars(_arg1:String):Array{ var _local2:Array; var _local3:Number; _local2 = new Array(); _local3 = ((_arg1.substr(0, 2))=="0x") ? 2 : 0; while (_local3 < _arg1.length) { _local2.push(parseInt(_arg1.substr(_local3, 2), 16)); _local3 = (_local3 + 2); }; return (_local2); } private static function charsToStr(_arg1:Array):String{ var _local2:String; var _local3:Number; _local2 = new String(""); _local3 = 0; while (_local3 < _arg1.length) { _local2 = (_local2 + String.fromCharCode(_arg1[_local3])); _local3++; }; return (_local2); } private static function longsToChars(_arg1:Array):Array{ var _local2:Array; var _local3:Number; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.length) { _local2.push((_arg1[_local3] & 0xFF), ((_arg1[_local3] >>> 8) & 0xFF), ((_arg1[_local3] >>> 16) & 0xFF), ((_arg1[_local3] >>> 24) & 0xFF)); _local3++; }; return (_local2); } public static function decrypt(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:Array; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local3 = charsToLongs(hexToChars(_arg1)); _local4 = charsToLongs(strToChars(_arg2)); _local5 = _local3.length; if (_local5 == 0){ return (""); }; _local7 = _local3[(_local5 - 1)]; _local8 = _local3[0]; _local9 = 2654435769; _local12 = Math.floor((6 + (52 / _local5))); _local13 = (_local12 * _local9); while (_local13 != 0) { _local11 = ((_local13 >>> 2) & 3); _local6 = (_local5 - 1); while (_local6 > 0) { _local7 = _local3[(_local6 - 1)]; _local10 = ((((_local7 >>> 5) ^ (_local8 << 2)) + ((_local8 >>> 3) ^ (_local7 << 4))) ^ ((_local13 ^ _local8) + (_local4[((_local6 & 3) ^ _local11)] ^ _local7))); _local8 = (_local3[_local6] = (_local3[_local6] - _local10)); _local6--; }; _local7 = _local3[(_local5 - 1)]; _local10 = ((((_local7 >>> 5) ^ (_local8 << 2)) + ((_local8 >>> 3) ^ (_local7 << 4))) ^ ((_local13 ^ _local8) + (_local4[((_local6 & 3) ^ _local11)] ^ _local7))); _local8 = (_local3[0] = (_local3[0] - _local10)); _local13 = (_local13 - _local9); }; return (charsToStr(longsToChars(_local3))); } private static function charsToLongs(_arg1:Array):Array{ var _local2:Array; var _local3:Number; _local2 = new Array(Math.ceil((_arg1.length / 4))); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = (((_arg1[(_local3 * 4)] + (_arg1[((_local3 * 4) + 1)] << 8)) + (_arg1[((_local3 * 4) + 2)] << 16)) + (_arg1[((_local3 * 4) + 3)] << 24)); _local3++; }; return (_local2); } } }//package com.jeroenwijering.utils
Section 51
//Regular (fl.transitions.easing.Regular) package fl.transitions.easing { public class Regular { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } } }//package fl.transitions.easing
Section 52
//Fade (fl.transitions.Fade) package fl.transitions { import flash.display.*; public class Fade extends Transition { protected var _alphaFinal:Number; public function Fade(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){ super(_arg1, _arg2, _arg3); this._alphaFinal = this.manager.contentAppearance.alpha; } override protected function _render(_arg1:Number):void{ this._content.alpha = (this._alphaFinal * _arg1); } override public function get type():Class{ return (Fade); } } }//package fl.transitions
Section 53
//Transition (fl.transitions.Transition) package fl.transitions { import flash.display.*; import flash.events.*; import flash.geom.*; public class Transition extends EventDispatcher { protected var _progress:Number; public var ID:int; protected var _twn:Tween; protected var _direction:uint;// = 0 protected var _content:MovieClip; protected var _height:Number;// = NAN protected var _width:Number;// = NAN protected var _outerBounds:Rectangle; protected var _easing:Function; protected var _innerBounds:Rectangle; protected var _manager:TransitionManager; protected var _duration:Number;// = 2 public static const IN:uint = 0; public static const OUT:uint = 1; public function Transition(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){ _direction = 0; _duration = 2; _width = NaN; _height = NaN; super(); this.content = _arg1; this.direction = _arg2.direction; this.duration = _arg2.duration; this.easing = _arg2.easing; this.manager = _arg3; this._innerBounds = this.manager._innerBounds; this._outerBounds = this.manager._outerBounds; this._width = this.manager._width; this._height = this.manager._height; this._resetTween(); } public function stop():void{ this._twn.fforward(); this._twn.stop(); } private function _resetTween():void{ if (this._twn){ this._twn.stop(); this._twn.removeEventListener(TweenEvent.MOTION_FINISH, this.onMotionFinished); }; this._twn = new Tween(this, "", this.easing, 0, 1, this.duration, true); this._twn.stop(); this._twn.prop = "progress"; this._twn.addEventListener(TweenEvent.MOTION_FINISH, this.onMotionFinished, false, 0, true); } public function onMotionFinished(_arg1:Object):void{ if (this.direction == Transition.OUT){ this.dispatchEvent(new Event("transitionOutDone")); } else { this.dispatchEvent(new Event("transitionInDone")); }; } public function get duration():Number{ return (this._duration); } public function set duration(_arg1:Number):void{ if (_arg1){ this._duration = _arg1; if (this._twn){ this._twn.duration = _arg1; }; }; } public function get easing():Function{ return (this._easing); } public function get progress():Number{ return (this._progress); } public function get manager():TransitionManager{ return (this._manager); } protected function _render(_arg1:Number):void{ } public function get type():Class{ return (Transition); } public function drawCircle(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number):void{ _arg1.graphics.moveTo((_arg2 + _arg4), _arg3); _arg1.graphics.curveTo((_arg4 + _arg2), ((Math.tan((Math.PI / 8)) * _arg4) + _arg3), ((Math.sin((Math.PI / 4)) * _arg4) + _arg2), ((Math.sin((Math.PI / 4)) * _arg4) + _arg3)); _arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg4) + _arg2), (_arg4 + _arg3), _arg2, (_arg4 + _arg3)); _arg1.graphics.curveTo(((-(Math.tan((Math.PI / 8))) * _arg4) + _arg2), (_arg4 + _arg3), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg2), ((Math.sin((Math.PI / 4)) * _arg4) + _arg3)); _arg1.graphics.curveTo((-(_arg4) + _arg2), ((Math.tan((Math.PI / 8)) * _arg4) + _arg3), (-(_arg4) + _arg2), _arg3); _arg1.graphics.curveTo((-(_arg4) + _arg2), ((-(Math.tan((Math.PI / 8))) * _arg4) + _arg3), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg2), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg3)); _arg1.graphics.curveTo(((-(Math.tan((Math.PI / 8))) * _arg4) + _arg2), (-(_arg4) + _arg3), _arg2, (-(_arg4) + _arg3)); _arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg4) + _arg2), (-(_arg4) + _arg3), ((Math.sin((Math.PI / 4)) * _arg4) + _arg2), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg3)); _arg1.graphics.curveTo((_arg4 + _arg2), ((-(Math.tan((Math.PI / 8))) * _arg4) + _arg3), (_arg4 + _arg2), _arg3); } public function cleanUp():void{ this.removeEventListener("transitionInDone", this._manager.transitionInDone); this.removeEventListener("transitionOutDone", this._manager.transitionOutDone); this.stop(); } public function set easing(_arg1:Function):void{ this._easing = _arg1; if (this._twn){ this._twn.func = _arg1; }; } public function set manager(_arg1:TransitionManager):void{ if (this._manager){ this.removeEventListener("transitionInDone", this._manager.transitionInDone); this.removeEventListener("transitionOutDone", this._manager.transitionOutDone); }; this._manager = _arg1; this.addEventListener("transitionInDone", this._manager.transitionInDone); this.addEventListener("transitionOutDone", this._manager.transitionOutDone); } public function set progress(_arg1:Number):void{ if (this._progress == _arg1){ return; }; this._progress = _arg1; if (this._direction){ this._render((1 - _arg1)); } else { this._render(_arg1); }; this.dispatchEvent(new Event("transitionProgress")); } public function start():void{ this.content.visible = true; this._twn.start(); } public function drawBox(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ _arg1.graphics.moveTo(_arg2, _arg3); _arg1.graphics.lineTo((_arg2 + _arg4), _arg3); _arg1.graphics.lineTo((_arg2 + _arg4), (_arg3 + _arg5)); _arg1.graphics.lineTo(_arg2, (_arg3 + _arg5)); _arg1.graphics.lineTo(_arg2, _arg3); } public function set content(_arg1:MovieClip):void{ if (_arg1){ this._content = _arg1; if (this._twn){ this._twn.obj = _arg1; }; }; } private function _noEase(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public function get content():MovieClip{ return (this._content); } public function set direction(_arg1:Number):void{ this._direction = (_arg1) ? 1 : 0; } public function get direction():Number{ return (this._direction); } } }//package fl.transitions
Section 54
//TransitionManager (fl.transitions.TransitionManager) package fl.transitions { import flash.display.*; import flash.events.*; import flash.geom.*; public class TransitionManager extends EventDispatcher { public var _innerBounds:Rectangle; private var _visualPropList:Object; private var _triggerEvent:String; public var className:String;// = "TransitionManager" public var type:Object; private var _contentAppearance:Object; private var _content:MovieClip; public var _width:Number;// = NAN public var _height:Number;// = NAN public var _outerBounds:Rectangle; private var _transitions:Object; private static var IDCount:int = 0; public function TransitionManager(_arg1:MovieClip){ type = TransitionManager; className = "TransitionManager"; _width = NaN; _height = NaN; _visualPropList = {x:null, y:null, scaleX:null, scaleY:null, alpha:null, rotation:null}; super(); this.content = _arg1; this._transitions = {}; } public function get content():MovieClip{ return (this._content); } public function removeAllTransitions():void{ var _local1:Transition; for each (_local1 in this._transitions) { _local1.cleanUp(); this.removeTransition(_local1); }; } function transitionInDone(_arg1:Object):void{ var _local2:Boolean; this.removeTransition(_arg1.target); if (this.numInTransitions == 0){ _local2 = this._content.visible; if ((((this._triggerEvent == "hide")) || ((this._triggerEvent == "hideChild")))){ this._content.visible = false; }; if (_local2){ this.dispatchEvent(new Event("allTransitionsInDone")); }; }; } public function get numOutTransitions():Number{ var _local1:Number; var _local2:Object; var _local3:Transition; _local1 = 0; _local2 = this._transitions; for each (_local3 in _local2) { if (_local3.direction){ _local1++; }; }; return (_local1); } public function get contentAppearance():Object{ return (this._contentAppearance); } public function saveContentAppearance():void{ var _local1:MovieClip; var _local2:Object; var _local3:String; _local1 = this._content; if (!this._contentAppearance){ _local2 = (this._contentAppearance = {}); for (_local3 in this._visualPropList) { _local2[_local3] = _local1[_local3]; }; _local2.colorTransform = _local1.transform.colorTransform; }; this._innerBounds = _local1.getBounds(_local1); this._outerBounds = _local1.getBounds(_local1.parent); this._width = _local1.width; this._height = _local1.height; } public function addTransition(_arg1:Transition):Transition{ _arg1.ID = ++TransitionManager.IDCount; this._transitions[_arg1.ID] = _arg1; return (_arg1); } public function startTransition(_arg1:Object):Transition{ var _local2:Class; var _local3:Transition; this.removeTransition(this.findTransition(_arg1)); _local2 = _arg1.type; _local3 = new _local2(this._content, _arg1, this); this.addTransition(_local3); _local3.start(); return (_local3); } function transitionOutDone(_arg1:Object):void{ var _local2:Boolean; this.removeTransition(_arg1.target); if (this.numOutTransitions == 0){ this.restoreContentAppearance(); _local2 = this._content.visible; if (((_local2) && ((((_triggerEvent == "hide")) || ((_triggerEvent == "hideChild")))))){ this._content.visible = false; }; if (_local2){ this.dispatchEvent(new Event("allTransitionsOutDone")); }; }; } public function restoreContentAppearance():void{ var _local1:MovieClip; var _local2:Object; var _local3:String; _local1 = this._content; _local2 = this._contentAppearance; for (_local3 in this._visualPropList) { _local1[_local3] = _local2[_local3]; }; _local1.transform.colorTransform = _local2.colorTransform; } public function get numTransitions():Number{ var _local1:Number; var _local2:Transition; _local1 = 0; for each (_local2 in this._transitions) { _local1++; }; return (_local1); } public function findTransition(_arg1:Object):Transition{ var _local2:Transition; for each (_local2 in this._transitions) { if (_local2.type == _arg1.type){ return (_local2); }; }; return (null); } public function set content(_arg1:MovieClip):void{ this._content = _arg1; this.saveContentAppearance(); } public function get numInTransitions():Number{ var _local1:Number; var _local2:Object; var _local3:Transition; _local1 = 0; _local2 = this._transitions; for each (_local3 in _local2) { if (!_local3.direction){ _local1++; }; }; return (_local1); } public function removeTransition(_arg1:Transition):Boolean{ if (((((!(_arg1)) || (!(this._transitions)))) || (!(this._transitions[_arg1.ID])))){ return (false); }; _arg1.cleanUp(); return (delete this._transitions[_arg1.ID]); } public function get transitionsList():Object{ return (this._transitions); } public static function start(_arg1:MovieClip, _arg2:Object):Transition{ if (!_arg1.__transitionManager){ _arg1.__transitionManager = new TransitionManager(_arg1); }; if (_arg2.direction == 1){ _arg1.__transitionManager._triggerEvent = "hide"; } else { _arg1.__transitionManager._triggerEvent = "reveal"; }; return (_arg1.__transitionManager.startTransition(_arg2)); } } }//package fl.transitions
Section 55
//Tween (fl.transitions.Tween) package fl.transitions { import flash.display.*; import flash.events.*; import flash.utils.*; public class Tween extends EventDispatcher { private var _position:Number;// = NAN public var prevTime:Number;// = NAN public var prevPos:Number;// = NAN public var isPlaying:Boolean;// = false public var begin:Number;// = NAN private var _fps:Number;// = NAN private var _time:Number;// = NAN public var change:Number;// = NAN private var _finish:Number;// = NAN public var looping:Boolean;// = false private var _intervalID:uint;// = 0 public var func:Function; private var _timer:Timer;// = null private var _startTime:Number;// = NAN public var prop:String;// = "" private var _duration:Number;// = NAN public var obj:Object;// = null public var useSeconds:Boolean;// = false protected static var _mc:MovieClip = new MovieClip(); public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){ isPlaying = false; obj = null; prop = ""; func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); }; begin = NaN; change = NaN; useSeconds = false; prevTime = NaN; prevPos = NaN; looping = false; _duration = NaN; _time = NaN; _fps = NaN; _position = NaN; _startTime = NaN; _intervalID = 0; _finish = NaN; _timer = null; super(); if (!arguments.length){ return; }; this.obj = _arg1; this.prop = _arg2; this.begin = _arg4; this.position = _arg4; this.duration = _arg6; this.useSeconds = _arg7; if ((_arg3 is Function)){ this.func = _arg3; }; this.finish = _arg5; this._timer = new Timer(100); this.start(); } public function continueTo(_arg1:Number, _arg2:Number):void{ this.begin = this.position; this.finish = _arg1; if (!isNaN(_arg2)){ this.duration = _arg2; }; this.start(); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position)); } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } public function set FPS(_arg1:Number):void{ var _local2:Boolean; _local2 = this.isPlaying; this.stopEnterFrame(); this._fps = _arg1; if (_local2){ this.startEnterFrame(); }; } public function get finish():Number{ return ((this.begin + this.change)); } public function get duration():Number{ return (this._duration); } protected function startEnterFrame():void{ var _local1:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true); } else { _local1 = (1000 / this._fps); this._timer.delay = _local1; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true); this._timer.start(); }; this.isPlaying = true; } public function set time(_arg1:Number):void{ this.prevTime = this._time; if (_arg1 > this.duration){ if (this.looping){ this.rewind((_arg1 - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (_arg1 < 0){ this.rewind(); this.update(); } else { this._time = _arg1; this.update(); }; }; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function getPosition(_arg1:Number=NaN):Number{ if (isNaN(_arg1)){ _arg1 = this._time; }; return (this.func(_arg1, this.begin, this.change, this._duration)); } public function set finish(_arg1:Number):void{ this.change = (_arg1 - this.begin); } public function set duration(_arg1:Number):void{ this._duration = ((_arg1)<=0) ? Infinity : _arg1; } public function setPosition(_arg1:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = _arg1); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position)); } public function fforward():void{ this.time = this._duration; this.fixTime(); } protected function onEnterFrame(_arg1:Event):void{ this.nextFrame(); } public function get position():Number{ return (this.getPosition(this._time)); } public function yoyo():void{ this.continueTo(this.begin, this.time); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function timerHandler(_arg1:TimerEvent):void{ this.nextFrame(); _arg1.updateAfterEvent(); } public function get FPS():Number{ return (this._fps); } public function rewind(_arg1:Number=0):void{ this._time = _arg1; this.fixTime(); this.update(); } public function set position(_arg1:Number):void{ this.setPosition(_arg1); } public function get time():Number{ return (this._time); } private function update():void{ this.setPosition(this.getPosition(this._time)); } public function start():void{ this.rewind(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position)); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } } }//package fl.transitions
Section 56
//TweenEvent (fl.transitions.TweenEvent) package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public var time:Number;// = NAN public var position:Number;// = NAN public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop"; public static const MOTION_LOOP:String = "motionLoop"; public static const MOTION_CHANGE:String = "motionChange"; public static const MOTION_FINISH:String = "motionFinish"; public static const MOTION_RESUME:String = "motionResume"; public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){ time = NaN; position = NaN; super(_arg1, _arg4, _arg5); this.time = _arg2; this.position = _arg3; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable)); } } }//package fl.transitions
Section 57
//bufferIcon_10 (player_fla.bufferIcon_10) package player_fla { import flash.display.*; import flash.text.*; public dynamic class bufferIcon_10 extends MovieClip { public var txt:TextField; } }//package player_fla
Section 58
//button_16 (player_fla.button_16) package player_fla { import flash.display.*; import flash.text.*; public dynamic class button_16 extends MovieClip { public var description:TextField; public var shade:MovieClip; public var image:MovieClip; public var title:TextField; public var duration:TextField; public var back:MovieClip; } }//package player_fla
Section 59
//controlbar_24 (player_fla.controlbar_24) package player_fla { import flash.display.*; import flash.text.*; import flash.accessibility.*; public dynamic class controlbar_24 extends MovieClip { public var unmuteButton:MovieClip; public var nextButton:MovieClip; public var timeSlider:MovieClip; public var normalscreenButton:MovieClip; public var shade:MovieClip; public var prevButton:MovieClip; public var totalText:TextField; public var volumeSlider:MovieClip; public var muteButton:MovieClip; public var elapsedText:TextField; public var linkButton:MovieClip; public var fullscreenButton:MovieClip; public var pauseButton:MovieClip; public var stopButton:MovieClip; public var playButton:MovieClip; public var back:MovieClip; public function controlbar_24(){ addFrameScript(0, frame1); } function frame1(){ unmuteButton.tabIndex = 10; muteButton.tabIndex = 9; linkButton.tabIndex = 6; fullscreenButton.tabIndex = 7; nextButton.tabIndex = 5; pauseButton.tabIndex = 2; playButton.tabIndex = 1; normalscreenButton.tabIndex = 8; stopButton.tabIndex = 3; prevButton.tabIndex = 4; back.accessibilityProperties = new AccessibilityProperties(); back.accessibilityProperties.silent = true; shade.accessibilityProperties = new AccessibilityProperties(); shade.accessibilityProperties.silent = true; volumeSlider.accessibilityProperties = new AccessibilityProperties(); volumeSlider.accessibilityProperties.silent = true; unmuteButton.accessibilityProperties = new AccessibilityProperties(); unmuteButton.accessibilityProperties.name = "unmuteButton"; unmuteButton.accessibilityProperties.shortcut = "m"; unmuteButton.accessibilityProperties.forceSimple = true; muteButton.accessibilityProperties = new AccessibilityProperties(); muteButton.accessibilityProperties.name = "muteButton"; muteButton.accessibilityProperties.shortcut = "m"; muteButton.accessibilityProperties.forceSimple = true; linkButton.accessibilityProperties = new AccessibilityProperties(); linkButton.accessibilityProperties.name = "linkButton"; linkButton.accessibilityProperties.shortcut = "l"; linkButton.accessibilityProperties.forceSimple = true; fullscreenButton.accessibilityProperties = new AccessibilityProperties(); fullscreenButton.accessibilityProperties.name = "FullscreenButton"; fullscreenButton.accessibilityProperties.shortcut = "f"; fullscreenButton.accessibilityProperties.forceSimple = true; timeSlider.accessibilityProperties = new AccessibilityProperties(); timeSlider.accessibilityProperties.silent = true; nextButton.accessibilityProperties = new AccessibilityProperties(); nextButton.accessibilityProperties.name = "nextButton"; nextButton.accessibilityProperties.shortcut = "right-arrow"; nextButton.accessibilityProperties.forceSimple = true; pauseButton.accessibilityProperties = new AccessibilityProperties(); pauseButton.accessibilityProperties.name = "pauseButton"; pauseButton.accessibilityProperties.shortcut = "p"; pauseButton.accessibilityProperties.forceSimple = true; playButton.accessibilityProperties = new AccessibilityProperties(); playButton.accessibilityProperties.name = "playButton"; playButton.accessibilityProperties.shortcut = "p"; playButton.accessibilityProperties.forceSimple = true; normalscreenButton.accessibilityProperties = new AccessibilityProperties(); normalscreenButton.accessibilityProperties.name = "normalscreenButton"; normalscreenButton.accessibilityProperties.shortcut = "f"; normalscreenButton.accessibilityProperties.forceSimple = true; stopButton.accessibilityProperties = new AccessibilityProperties(); stopButton.accessibilityProperties.name = "stopButton"; stopButton.accessibilityProperties.shortcut = "s"; stopButton.accessibilityProperties.forceSimple = true; prevButton.accessibilityProperties = new AccessibilityProperties(); prevButton.accessibilityProperties.name = "prevButton"; prevButton.accessibilityProperties.shortcut = "left-arrow"; prevButton.accessibilityProperties.forceSimple = true; } } }//package player_fla
Section 60
//display_2 (player_fla.display_2) package player_fla { import flash.display.*; import flash.accessibility.*; public dynamic class display_2 extends MovieClip { public var media:MovieClip; public var nextIcon:MovieClip; public var muteIcon:MovieClip; public var masker:MovieClip; public var errorIcon:MovieClip; public var linkIcon:MovieClip; public var logo:MovieClip; public var playIcon:MovieClip; public var fullscreenIcon:MovieClip; public var bufferIcon:MovieClip; public var back:MovieClip; public function display_2(){ addFrameScript(0, frame1); } function frame1(){ back.accessibilityProperties = new AccessibilityProperties(); back.accessibilityProperties.silent = true; masker.accessibilityProperties = new AccessibilityProperties(); masker.accessibilityProperties.silent = true; back.accessibilityProperties = new AccessibilityProperties(); back.accessibilityProperties.silent = true; } } }//package player_fla
Section 61
//errorIcon_6 (player_fla.errorIcon_6) package player_fla { import flash.display.*; import flash.text.*; public dynamic class errorIcon_6 extends MovieClip { public var txt:TextField; } }//package player_fla
Section 62
//fullscreenButton_38 (player_fla.fullscreenButton_38) package player_fla { import flash.display.*; public dynamic class fullscreenButton_38 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 63
//linkButton_35 (player_fla.linkButton_35) package player_fla { import flash.display.*; public dynamic class linkButton_35 extends MovieClip { public var icon:MovieClip; public var back:MovieClip; } }//package player_fla
Section 64
//list_15 (player_fla.list_15) package player_fla { import flash.display.*; public dynamic class list_15 extends MovieClip { public var button:MovieClip; } }//package player_fla
Section 65
//muteButton_33 (player_fla.muteButton_33) package player_fla { import flash.display.*; public dynamic class muteButton_33 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 66
//nextButton_45 (player_fla.nextButton_45) package player_fla { import flash.display.*; public dynamic class nextButton_45 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 67
//normalscreenButton_51 (player_fla.normalscreenButton_51) package player_fla { import flash.display.*; public dynamic class normalscreenButton_51 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 68
//pauseButton_47 (player_fla.pauseButton_47) package player_fla { import flash.display.*; public dynamic class pauseButton_47 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 69
//playButton_49 (player_fla.playButton_49) package player_fla { import flash.display.*; public dynamic class playButton_49 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 70
//player_1 (player_fla.player_1) package player_fla { import flash.display.*; import flash.accessibility.*; public dynamic class player_1 extends MovieClip { public var controlbar:MovieClip; public var display:MovieClip; public var playlist:MovieClip; public function player_1(){ addFrameScript(0, frame1); } function frame1(){ display.accessibilityProperties = new AccessibilityProperties(); display.accessibilityProperties.silent = true; playlist.accessibilityProperties = new AccessibilityProperties(); playlist.accessibilityProperties.silent = true; } } }//package player_fla
Section 71
//playlist_13 (player_fla.playlist_13) package player_fla { import flash.display.*; public dynamic class playlist_13 extends MovieClip { public var masker:MovieClip; public var list:MovieClip; public var slider:MovieClip; public var back:MovieClip; } }//package player_fla
Section 72
//prevButton_55 (player_fla.prevButton_55) package player_fla { import flash.display.*; public dynamic class prevButton_55 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 73
//slider_20 (player_fla.slider_20) package player_fla { import flash.display.*; public dynamic class slider_20 extends MovieClip { public var icon:MovieClip; public var rail:MovieClip; public var back:MovieClip; } }//package player_fla
Section 74
//stopButton_53 (player_fla.stopButton_53) package player_fla { import flash.display.*; public dynamic class stopButton_53 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 75
//timeSlider_40 (player_fla.timeSlider_40) package player_fla { import flash.display.*; import flash.accessibility.*; public dynamic class timeSlider_40 extends MovieClip { public var icon:MovieClip; public var rail:MovieClip; public var done:MovieClip; public var mark:MovieClip; public function timeSlider_40(){ addFrameScript(0, frame1); } function frame1(){ mark.accessibilityProperties = new AccessibilityProperties(); mark.accessibilityProperties.silent = true; done.accessibilityProperties = new AccessibilityProperties(); done.accessibilityProperties.silent = true; icon.accessibilityProperties = new AccessibilityProperties(); icon.accessibilityProperties.silent = true; } } }//package player_fla
Section 76
//unmuteButton_31 (player_fla.unmuteButton_31) package player_fla { import flash.display.*; public dynamic class unmuteButton_31 extends MovieClip { public var icon:MovieClip; } }//package player_fla
Section 77
//volumeSlider_27 (player_fla.volumeSlider_27) package player_fla { import flash.display.*; public dynamic class volumeSlider_27 extends MovieClip { public var icon:MovieClip; public var rail:MovieClip; public var mark:MovieClip; } }//package player_fla
Section 78
//Watermark (Watermark) package { import com.jeroenwijering.plugins.*; public dynamic class Watermark extends Watermark { } }//package

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClip {Watermark}Uses:1
Symbol 3 GraphicUsed by:4 43 54 63 90 110
Symbol 4 MovieClipUses:3Used by:37
Symbol 5 GraphicUsed by:6 7
Symbol 6 MovieClipUses:5Used by:37
Symbol 7 MovieClipUses:5Used by:37
Symbol 8 GraphicUsed by:11
Symbol 9 FontUsed by:10 20 47
Symbol 10 EditableTextUses:9Used by:11
Symbol 11 MovieClip {player_fla.errorIcon_6}Uses:8 10Used by:37
Symbol 12 GraphicUsed by:13
Symbol 13 MovieClipUses:12Used by:37
Symbol 14 GraphicUsed by:15
Symbol 15 MovieClipUses:14Used by:37
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:16Used by:37
Symbol 18 GraphicUsed by:32
Symbol 19 GraphicUsed by:32
Symbol 20 EditableTextUses:9Used by:32
Symbol 21 GraphicUsed by:32
Symbol 22 GraphicUsed by:32
Symbol 23 GraphicUsed by:32
Symbol 24 GraphicUsed by:32
Symbol 25 GraphicUsed by:32
Symbol 26 GraphicUsed by:32
Symbol 27 GraphicUsed by:32
Symbol 28 GraphicUsed by:32
Symbol 29 GraphicUsed by:32
Symbol 30 GraphicUsed by:32
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClip {player_fla.bufferIcon_10}Uses:18 19 20 21 22 23 24 25 26 27 28 29 30 31Used by:37
Symbol 33 GraphicUsed by:34
Symbol 34 MovieClipUses:33Used by:37
Symbol 35 GraphicUsed by:36
Symbol 36 MovieClipUses:35Used by:37
Symbol 37 MovieClip {player_fla.display_2}Uses:4 6 7 11 13 15 17 32 34 36Used by:116
Symbol 38 GraphicUsed by:39 40 57
Symbol 39 MovieClipUses:38Used by:56
Symbol 40 MovieClipUses:38Used by:48
Symbol 41 GraphicUsed by:42
Symbol 42 MovieClipUses:41Used by:48
Symbol 43 MovieClipUses:3Used by:48
Symbol 44 FontUsed by:45 46
Symbol 45 EditableTextUses:44Used by:48
Symbol 46 EditableTextUses:44Used by:48
Symbol 47 EditableTextUses:9Used by:48
Symbol 48 MovieClip {player_fla.button_16}Uses:40 42 43 45 46 47Used by:49
Symbol 49 MovieClip {player_fla.list_15}Uses:48Used by:56
Symbol 50 GraphicUsed by:51
Symbol 51 MovieClipUses:50Used by:55
Symbol 52 GraphicUsed by:53
Symbol 53 MovieClipUses:52Used by:55
Symbol 54 MovieClipUses:3Used by:55
Symbol 55 MovieClip {player_fla.slider_20}Uses:51 53 54Used by:56
Symbol 56 MovieClip {player_fla.playlist_13}Uses:39 49 55Used by:116
Symbol 57 MovieClipUses:38Used by:115
Symbol 58 GraphicUsed by:59
Symbol 59 MovieClipUses:58Used by:115
Symbol 60 GraphicUsed by:61
Symbol 61 MovieClipUses:60Used by:66
Symbol 62 GraphicUsed by:66
Symbol 63 MovieClipUses:3Used by:66
Symbol 64 GraphicUsed by:65
Symbol 65 MovieClipUses:64Used by:66
Symbol 66 MovieClip {player_fla.volumeSlider_27}Uses:61 62 63 65Used by:115
Symbol 67 GraphicUsed by:70 73
Symbol 68 GraphicUsed by:69
Symbol 69 MovieClipUses:68Used by:70
Symbol 70 MovieClip {player_fla.unmuteButton_31}Uses:67 69Used by:115
Symbol 71 GraphicUsed by:72
Symbol 72 MovieClipUses:71Used by:73
Symbol 73 MovieClip {player_fla.muteButton_33}Uses:67 72Used by:115
Symbol 74 GraphicUsed by:79
Symbol 75 GraphicUsed by:76
Symbol 76 MovieClipUses:75Used by:79
Symbol 77 GraphicUsed by:78
Symbol 78 MovieClipUses:77Used by:79
Symbol 79 MovieClip {player_fla.linkButton_35}Uses:74 76 78Used by:115
Symbol 80 GraphicUsed by:83 105
Symbol 81 GraphicUsed by:82
Symbol 82 MovieClipUses:81Used by:83
Symbol 83 MovieClip {player_fla.fullscreenButton_38}Uses:80 82Used by:115
Symbol 84 GraphicUsed by:85
Symbol 85 MovieClipUses:84Used by:91
Symbol 86 GraphicUsed by:87
Symbol 87 MovieClipUses:86Used by:91
Symbol 88 GraphicUsed by:89
Symbol 89 MovieClipUses:88Used by:91
Symbol 90 MovieClipUses:3Used by:91
Symbol 91 MovieClip {player_fla.timeSlider_40}Uses:85 87 89 90Used by:115
Symbol 92 GraphicUsed by:95 114
Symbol 93 GraphicUsed by:94
Symbol 94 MovieClipUses:93Used by:95
Symbol 95 MovieClip {player_fla.nextButton_45}Uses:92 94Used by:115
Symbol 96 GraphicUsed by:99 102
Symbol 97 GraphicUsed by:98
Symbol 98 MovieClipUses:97Used by:99
Symbol 99 MovieClip {player_fla.pauseButton_47}Uses:96 98Used by:115
Symbol 100 GraphicUsed by:101
Symbol 101 MovieClipUses:100Used by:102
Symbol 102 MovieClip {player_fla.playButton_49}Uses:96 101Used by:115
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClipUses:103Used by:105
Symbol 105 MovieClip {player_fla.normalscreenButton_51}Uses:80 104Used by:115
Symbol 106 FontUsed by:107 108
Symbol 107 EditableTextUses:106Used by:115
Symbol 108 EditableTextUses:106Used by:115
Symbol 109 GraphicUsed by:111
Symbol 110 MovieClipUses:3Used by:111
Symbol 111 MovieClip {player_fla.stopButton_53}Uses:109 110Used by:115
Symbol 112 GraphicUsed by:113
Symbol 113 MovieClipUses:112Used by:114
Symbol 114 MovieClip {player_fla.prevButton_55}Uses:92 113Used by:115
Symbol 115 MovieClip {player_fla.controlbar_24}Uses:57 59 66 70 73 79 83 91 95 99 102 105 107 108 111 114Used by:116
Symbol 116 MovieClip {player_fla.player_1}Uses:37 56 115Used by:Timeline

Instance Names

"player"Frame 1Symbol 116 MovieClip {player_fla.player_1}
"txt"Symbol 11 MovieClip {player_fla.errorIcon_6} Frame 1Symbol 10 EditableText
"txt"Symbol 32 MovieClip {player_fla.bufferIcon_10} Frame 1Symbol 20 EditableText
"back"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 4 MovieClip
"masker"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 4 MovieClip
"media"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 6 MovieClip
"logo"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 7 MovieClip
"errorIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 11 MovieClip {player_fla.errorIcon_6}
"linkIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 13 MovieClip
"muteIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 15 MovieClip
"playIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 17 MovieClip
"bufferIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 32 MovieClip {player_fla.bufferIcon_10}
"fullscreenIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 34 MovieClip
"nextIcon"Symbol 37 MovieClip {player_fla.display_2} Frame 1Symbol 36 MovieClip
"back"Symbol 48 MovieClip {player_fla.button_16} Frame 1Symbol 40 MovieClip
"shade"Symbol 48 MovieClip {player_fla.button_16} Frame 1Symbol 42 MovieClip
"image"Symbol 48 MovieClip {player_fla.button_16} Frame 1Symbol 43 MovieClip
"title"Symbol 48 MovieClip {player_fla.button_16} Frame 1Symbol 45 EditableText
"duration"Symbol 48 MovieClip {player_fla.button_16} Frame 1Symbol 46 EditableText
"description"Symbol 48 MovieClip {player_fla.button_16} Frame 1Symbol 47 EditableText
"button"Symbol 49 MovieClip {player_fla.list_15} Frame 1Symbol 48 MovieClip {player_fla.button_16}
"back"Symbol 55 MovieClip {player_fla.slider_20} Frame 1Symbol 51 MovieClip
"rail"Symbol 55 MovieClip {player_fla.slider_20} Frame 1Symbol 53 MovieClip
"icon"Symbol 55 MovieClip {player_fla.slider_20} Frame 1Symbol 54 MovieClip
"back"Symbol 56 MovieClip {player_fla.playlist_13} Frame 1Symbol 39 MovieClip
"masker"Symbol 56 MovieClip {player_fla.playlist_13} Frame 1Symbol 39 MovieClip
"list"Symbol 56 MovieClip {player_fla.playlist_13} Frame 1Symbol 49 MovieClip {player_fla.list_15}
"slider"Symbol 56 MovieClip {player_fla.playlist_13} Frame 1Symbol 55 MovieClip {player_fla.slider_20}
"rail"Symbol 66 MovieClip {player_fla.volumeSlider_27} Frame 1Symbol 61 MovieClip
"mark"Symbol 66 MovieClip {player_fla.volumeSlider_27} Frame 1Symbol 63 MovieClip
"icon"Symbol 66 MovieClip {player_fla.volumeSlider_27} Frame 1Symbol 65 MovieClip
"icon"Symbol 70 MovieClip {player_fla.unmuteButton_31} Frame 1Symbol 69 MovieClip
"icon"Symbol 73 MovieClip {player_fla.muteButton_33} Frame 1Symbol 72 MovieClip
"back"Symbol 79 MovieClip {player_fla.linkButton_35} Frame 1Symbol 76 MovieClip
"icon"Symbol 79 MovieClip {player_fla.linkButton_35} Frame 1Symbol 78 MovieClip
"icon"Symbol 83 MovieClip {player_fla.fullscreenButton_38} Frame 1Symbol 82 MovieClip
"rail"Symbol 91 MovieClip {player_fla.timeSlider_40} Frame 1Symbol 85 MovieClip
"mark"Symbol 91 MovieClip {player_fla.timeSlider_40} Frame 1Symbol 87 MovieClip
"done"Symbol 91 MovieClip {player_fla.timeSlider_40} Frame 1Symbol 89 MovieClip
"icon"Symbol 91 MovieClip {player_fla.timeSlider_40} Frame 1Symbol 90 MovieClip
"icon"Symbol 95 MovieClip {player_fla.nextButton_45} Frame 1Symbol 94 MovieClip
"icon"Symbol 99 MovieClip {player_fla.pauseButton_47} Frame 1Symbol 98 MovieClip
"icon"Symbol 102 MovieClip {player_fla.playButton_49} Frame 1Symbol 101 MovieClip
"icon"Symbol 105 MovieClip {player_fla.normalscreenButton_51} Frame 1Symbol 104 MovieClip
"icon"Symbol 111 MovieClip {player_fla.stopButton_53} Frame 1Symbol 110 MovieClip
"icon"Symbol 114 MovieClip {player_fla.prevButton_55} Frame 1Symbol 113 MovieClip
"back"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 57 MovieClip
"shade"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 59 MovieClip
"volumeSlider"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 66 MovieClip {player_fla.volumeSlider_27}
"unmuteButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 70 MovieClip {player_fla.unmuteButton_31}
"muteButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 73 MovieClip {player_fla.muteButton_33}
"linkButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 79 MovieClip {player_fla.linkButton_35}
"fullscreenButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 83 MovieClip {player_fla.fullscreenButton_38}
"timeSlider"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 91 MovieClip {player_fla.timeSlider_40}
"nextButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 95 MovieClip {player_fla.nextButton_45}
"pauseButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 99 MovieClip {player_fla.pauseButton_47}
"playButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 102 MovieClip {player_fla.playButton_49}
"normalscreenButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 105 MovieClip {player_fla.normalscreenButton_51}
"elapsedText"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 107 EditableText
"totalText"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 108 EditableText
"stopButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 111 MovieClip {player_fla.stopButton_53}
"prevButton"Symbol 115 MovieClip {player_fla.controlbar_24} Frame 1Symbol 114 MovieClip {player_fla.prevButton_55}
"display"Symbol 116 MovieClip {player_fla.player_1} Frame 1Symbol 37 MovieClip {player_fla.display_2}
"playlist"Symbol 116 MovieClip {player_fla.player_1} Frame 1Symbol 56 MovieClip {player_fla.playlist_13}
"controlbar"Symbol 116 MovieClip {player_fla.player_1} Frame 1Symbol 115 MovieClip {player_fla.controlbar_24}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.




http://swfchan.com/53/261617/info.shtml
Created: 24/8 -2025 14:44:06 Last modified: 24/8 -2025 14:44:06 Server time: 05/12 -2025 09:52:16