root/tags/mediaplayer-4.4/yt.as

Revision 191, 2.9 kB (checked in by jeroen, 8 months ago)

tagged 4.4 release

Line 
1// Security domains
2System.security.allowDomain('*');
3System.security.allowInsecureDomain('*');
4
5
6
7// Variables
8if(!unique) { var unique = 1; }
9var ytPlayer:MovieClip = this.createEmptyMovieClip("ytPlayer",this.getNextHighestDepth());
10var ytPlayerLoader:MovieClipLoader = new MovieClipLoader();
11var ytLocation:String = "http://www.youtube.com/apiplayer";
12var _as3_to_as2:LocalConnection = new LocalConnection();
13var _as2_to_as3:LocalConnection = new LocalConnection();
14_as3_to_as2.allowDomain('*');
15_as2_to_as3.allowDomain('*');
16var connection:String;
17var loadInterval:Number;
18var byteInterval:Number;
19var timeInterval:Number;
20var loaded:Number;
21var position:Number;
22
23
24
25// Interval handlers
26function loadHandler() {
27        if (ytPlayer.isPlayerLoaded()) {
28                _as2_to_as3.send('AS2_'+unique,"onSwfLoadComplete");
29                clearInterval(loadInterval);
30                ytPlayer.addEventListener("onStateChange", onPlayerStateChange);
31                ytPlayer.addEventListener("onError", onPlayerError);
32                ytPlayer.unMute();
33        }
34};
35function byteHandler() {
36        var btl = ytPlayer.getVideoBytesLoaded();
37        var ttl = ytPlayer.getVideoBytesTotal();
38        var off =  ytPlayer.getVideoStartBytes();
39        if(ttl > 10 && btl != loaded) {
40                loaded = btl;
41                _as2_to_as3.send('AS2_'+unique,"onLoadChange",btl,ttl,off);
42                if(btl+off >= ttl) {
43                        clearInterval(byteInterval);
44                }
45        }
46};
47function timeHandler() {
48        var pos = Math.round(ytPlayer.getCurrentTime()*10)/10;
49        var dur = Math.round(ytPlayer.getDuration()*10)/10;
50        if(dur > 3) {
51                if(pos == position && dur-pos < 10) {
52                        onPlayerStateChange(0);
53                } else {
54                        _as2_to_as3.send('AS2_'+unique,"onTimeChange",pos,dur);
55                }
56        }
57        position = pos;
58};
59
60
61
62// Event handlers
63function onPlayerStateChange(stt:Number) {
64        clearInterval(timeInterval);
65        if(stt == 1) {
66                timeInterval = setInterval(timeHandler,200);
67        } else if (stt == 3) {
68                clearInterval(byteInterval);
69                byteInterval = setInterval(byteHandler,200);
70                timeInterval = setInterval(timeHandler,200);
71        }
72        _as2_to_as3.send('AS2_'+unique,"onStateChange",stt);
73};
74function onPlayerError(erc:Number) {
75        _as2_to_as3.send('AS2_'+unique,"onError",stt);
76        clearInterval(timeInterval);
77};
78
79
80// Directive forwards
81_as3_to_as2.pauseVideo = function() { ytPlayer.pauseVideo(); };
82_as3_to_as2.playVideo = function() { ytPlayer.playVideo(); };
83_as3_to_as2.stopVideo = function(){ ytPlayer.stopVideo(); clearInterval(byteInterval); };
84_as3_to_as2.loadVideoById = function(id,pos) { ytPlayer.loadVideoById(id,pos); };
85_as3_to_as2.setVolume = function(vol) { ytPlayer.setVolume(vol); };
86_as3_to_as2.seekTo = function(pos) { ytPlayer.seekTo(pos,true); };
87_as3_to_as2.setSize = function(wid,hei) { ytPlayer.setSize(wid,hei); };
88
89
90// Initialization
91_as3_to_as2.connect('AS3_'+unique);
92ytPlayerLoaderListener = {};
93ytPlayerLoaderListener.onLoadInit = function() { loadInterval = setInterval(loadHandler,200); };
94ytPlayerLoader.addListener(ytPlayerLoaderListener);
95ytPlayerLoader.loadClip(ytLocation,ytPlayer);
Note: See TracBrowser for help on using the browser.