| 1 | /**
|
|---|
| 2 | * Javascript user interface management of the players MCV pattern.
|
|---|
| 3 | *
|
|---|
| 4 | * @author Jeroen Wijering
|
|---|
| 5 | * @version 1.5
|
|---|
| 6 | **/
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 | import com.jeroenwijering.players.*;
|
|---|
| 10 | import flash.external.ExternalInterface;
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 | class com.jeroenwijering.players.JavascriptView extends AbstractView {
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 | /** Previous loading value **/
|
|---|
| 17 | private var loads:Number;
|
|---|
| 18 | /** Previous elapsed value **/
|
|---|
| 19 | private var elaps:Number;
|
|---|
| 20 | /** Previous remaining value **/
|
|---|
| 21 | private var remain:Number;
|
|---|
| 22 | /** Previous state value **/
|
|---|
| 23 | private var state:Number = 4;
|
|---|
| 24 | /** Status change abbreviations **/
|
|---|
| 25 | private var statuses:Array = new Array(
|
|---|
| 26 | 'PAUSED',
|
|---|
| 27 | 'BUFFERING',
|
|---|
| 28 | 'PLAYING',
|
|---|
| 29 | 'COMPLETE',
|
|---|
| 30 | 'NOT STARTED'
|
|---|
| 31 | );
|
|---|
| 32 |
|
|---|
| 33 |
|
|---|
| 34 | /** Constructor **/
|
|---|
| 35 | function JavascriptView(ctr:AbstractController,cfg:Object,fed:Object) {
|
|---|
| 36 | super(ctr,cfg,fed);
|
|---|
| 37 | if(ExternalInterface.available) {
|
|---|
| 38 | ExternalInterface.addCallback("sendEvent",this,sendEvent);
|
|---|
| 39 | }
|
|---|
| 40 | };
|
|---|
| 41 |
|
|---|
| 42 |
|
|---|
| 43 | /** Override of the update receiver; forwarding all to javascript **/
|
|---|
| 44 | public function getUpdate(typ:String,pr1:Number,pr2:Number) {
|
|---|
| 45 | if(ExternalInterface.available) {
|
|---|
| 46 | switch(typ) {
|
|---|
| 47 | case "load":
|
|---|
| 48 | if(Math.round(pr1) != loads) {
|
|---|
| 49 | loads = Math.round(pr1);
|
|---|
| 50 | ExternalInterface.call("getUpdate",typ,loads,pr2,
|
|---|
| 51 | config["javascriptid"]);
|
|---|
| 52 | }
|
|---|
| 53 | break;
|
|---|
| 54 | case "time":
|
|---|
| 55 | if(Math.round(pr1)!=elaps || Math.round(pr2)!=remain) {
|
|---|
| 56 | elaps = Math.round(pr1);
|
|---|
| 57 | remain = Math.round(pr2);
|
|---|
| 58 | ExternalInterface.call("getUpdate",typ,elaps,remain,
|
|---|
| 59 | config["javascriptid"]);
|
|---|
| 60 | }
|
|---|
| 61 | break;
|
|---|
| 62 | case "item":
|
|---|
| 63 | ExternalInterface.call("getUpdate",typ,pr1,pr2,
|
|---|
| 64 | config["javascriptid"]);
|
|---|
| 65 | break;
|
|---|
| 66 | case "state":
|
|---|
| 67 | sendStatusChange(pr1);
|
|---|
| 68 | ExternalInterface.call("getUpdate",typ,pr1,pr2,
|
|---|
| 69 | config["javascriptid"]);
|
|---|
| 70 | break;
|
|---|
| 71 | default:
|
|---|
| 72 | ExternalInterface.call("getUpdate",typ,pr1,pr2,
|
|---|
| 73 | config["javascriptid"]);
|
|---|
| 74 | break;
|
|---|
| 75 | }
|
|---|
| 76 | }
|
|---|
| 77 | };
|
|---|
| 78 |
|
|---|
| 79 |
|
|---|
| 80 | /** state change function for longtail **/
|
|---|
| 81 | private function sendStatusChange(stt) {
|
|---|
| 82 | if(!(state == 3 && stt == 0)) {
|
|---|
| 83 | ExternalInterface.call("playerStatusChange",
|
|---|
| 84 | statuses[state],statuses[stt]);
|
|---|
| 85 | }
|
|---|
| 86 | state = stt;
|
|---|
| 87 | };
|
|---|
| 88 |
|
|---|
| 89 |
|
|---|
| 90 | } |
|---|