root/trunk/as2/com/jeroenwijering/players/JavascriptView.as @ 1

Revision 1, 2.2 kB (checked in by jeroen, 18 months ago)

initial commit of old repository into public one

  • Property svn:executable set to *
Line 
1/**
2* Javascript user interface management of the players MCV pattern.
3*
4* @author       Jeroen Wijering
5* @version      1.5
6**/
7
8
9import com.jeroenwijering.players.*;
10import flash.external.ExternalInterface;
11
12
13class 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}
Note: See TracBrowser for help on using the browser.