root/tags/mediaplayer-4.3/yt.as

Revision 160, 2.9 kB (checked in by pablo, 9 months ago)

Using trunk version (rev. 159) of yt.as and yt.swf. This fixes an issue introduced by YouTube where the copy of their chromeless player the 4.3 player links to no longer plays videos.

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.setSize(320,240);
33                ytPlayer.unMute();
34        }
35};
36function byteHandler() {
37        var btl = ytPlayer.getVideoBytesLoaded();
38        var ttl = ytPlayer.getVideoBytesTotal();
39        var off =  ytPlayer.getVideoStartBytes();
40        if(ttl > 10 && btl != loaded) {
41                loaded = btl;
42                _as2_to_as3.send('AS2_'+unique,"onLoadChange",btl,ttl,off);
43                if(btl+off >= ttl) {
44                        clearInterval(byteInterval);
45                }
46        }
47};
48function timeHandler() {
49        var pos = Math.round(ytPlayer.getCurrentTime()*10)/10;
50        var dur = Math.round(ytPlayer.getDuration()*10)/10;
51        if(dur > 3) {
52                if(pos == position && dur-pos < 10) {
53                        onPlayerStateChange(0);
54                } else {
55                        _as2_to_as3.send('AS2_'+unique,"onTimeChange",pos,dur);
56                }
57        }
58        position = pos;
59};
60
61
62
63// Event handlers
64function onPlayerStateChange(stt:Number) {
65        clearInterval(timeInterval);
66        if(stt == 1) {
67                timeInterval = setInterval(timeHandler,200);
68        } else if (stt == 3) {
69                clearInterval(byteInterval);
70                byteInterval = setInterval(byteHandler,200);
71                timeInterval = setInterval(timeHandler,200);
72        }
73        _as2_to_as3.send('AS2_'+unique,"onStateChange",stt);
74};
75function onPlayerError(erc:Number) {
76        _as2_to_as3.send('AS2_'+unique,"onError",stt);
77        clearInterval(timeInterval);
78};
79
80
81// Directive forwards
82_as3_to_as2.pauseVideo = function() { ytPlayer.pauseVideo(); };
83_as3_to_as2.playVideo = function() { ytPlayer.playVideo(); };
84_as3_to_as2.stopVideo = function(){ ytPlayer.stopVideo(); clearInterval(byteInterval); };
85_as3_to_as2.loadVideoById = function(id,pos) { ytPlayer.loadVideoById(id,pos); };
86_as3_to_as2.setVolume = function(vol) { ytPlayer.setVolume(vol); };
87_as3_to_as2.seekTo = function(pos) { ytPlayer.seekTo(pos,true); };
88_as3_to_as2.setSize = function(wid,hei) { ytPlayer.setSize(wid,hei); };
89
90
91// Initialization
92_as3_to_as2.connect('AS3_'+unique);
93ytPlayerLoaderListener = {};
94ytPlayerLoaderListener.onLoadInit = function() { loadInterval = setInterval(loadHandler,200); };
95ytPlayerLoader.addListener(ytPlayerLoaderListener);
96ytPlayerLoader.loadClip(ytLocation,ytPlayer);
Note: See TracBrowser for help on using the browser.