root / trunk / web / dojo / dojox / av / _Media.js @ 13
History | View | Annotate | Download (3.02 KB)
1 |
/*
|
---|---|
2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
4 |
see: http://dojotoolkit.org/license for details
|
5 |
*/
|
6 |
|
7 |
|
8 |
if(!dojo._hasResource["dojox.av._Media"]){ |
9 |
dojo._hasResource["dojox.av._Media"]=true; |
10 |
dojo.provide("dojox.av._Media");
|
11 |
dojo.declare("dojox.av._Media",null,{mediaUrl:"",initialVolume:1,autoPlay:false,bufferTime:2000,minBufferTime:300,updateTime:100,id:"",isDebug:false,percentDownloaded:0,_flashObject:null,flashMedia:null,_initStatus:function(){ |
12 |
this.status="ready"; |
13 |
dojo.connect(this,"onPosition",this,"_figureStatus"); |
14 |
},getTime:function(){ |
15 |
return this.flashMedia.getTime(); |
16 |
},onLoad:function(_1){ |
17 |
},onDownloaded:function(_2){ |
18 |
},onClick:function(_3){ |
19 |
},onSwfSized:function(_4){ |
20 |
},onMetaData:function(_5,_6){ |
21 |
this.duration=_5.duration;
|
22 |
},onPosition:function(_7){ |
23 |
},onStart:function(_8){ |
24 |
},onPlay:function(_9){ |
25 |
},onPause:function(_a){ |
26 |
},onEnd:function(_b){ |
27 |
},onStop:function(){ |
28 |
},onBuffer:function(_c){ |
29 |
this.isBuffering=_c;
|
30 |
},onError:function(_d,_e){ |
31 |
console.warn("ERROR-"+_d.type.toUpperCase()+":",_d.info.code," - URL:",_e); |
32 |
},onStatus:function(_f){ |
33 |
},onPlayerStatus:function(_10){ |
34 |
},onResize:function(){ |
35 |
},_figureStatus:function(){ |
36 |
var pos=this.getTime(); |
37 |
if(this.status=="stopping"){ |
38 |
this.status="stopped"; |
39 |
this.onStop(this._eventFactory()); |
40 |
}else{
|
41 |
if(this.status=="ending"&&pos==this._prevPos){ |
42 |
this.status="ended"; |
43 |
this.onEnd(this._eventFactory()); |
44 |
}else{
|
45 |
if(this.duration&&pos>this.duration-0.5){ |
46 |
this.status="ending"; |
47 |
}else{
|
48 |
if(pos===0){ |
49 |
if(this.status=="ready"){ |
50 |
}else{
|
51 |
this.status="stopped"; |
52 |
if(this._prevStatus!="stopped"){ |
53 |
this.onStop(this._eventFactory()); |
54 |
} |
55 |
} |
56 |
}else{
|
57 |
if(this.status=="ready"){ |
58 |
this.status="started"; |
59 |
this.onStart(this._eventFactory()); |
60 |
this.onPlay(this._eventFactory()); |
61 |
}else{
|
62 |
if(this.isBuffering){ |
63 |
this.status="buffering"; |
64 |
}else{
|
65 |
if(this.status=="started"||(this.status=="playing"&&pos!=this._prevPos)){ |
66 |
this.status="playing"; |
67 |
}else{
|
68 |
if(!this.isStopped&&this.status=="playing"&&pos==this._prevPos){ |
69 |
this.status="paused"; |
70 |
console.warn("pause",pos,this._prevPos); |
71 |
if(this.status!=this._prevStatus){ |
72 |
this.onPause(this._eventFactory()); |
73 |
} |
74 |
}else{
|
75 |
if((this.status=="paused"||this.status=="stopped")&&pos!=this._prevPos){ |
76 |
this.status="started"; |
77 |
this.onPlay(this._eventFactory()); |
78 |
} |
79 |
} |
80 |
} |
81 |
} |
82 |
} |
83 |
} |
84 |
} |
85 |
} |
86 |
} |
87 |
this._prevPos=pos;
|
88 |
this._prevStatus=this.status; |
89 |
this.onStatus(this.status); |
90 |
},_eventFactory:function(){ |
91 |
var evt={status:this.status}; |
92 |
return evt;
|
93 |
},_sub:function(_11,_12){ |
94 |
dojo.subscribe(this.id+"/"+_11,this,_12); |
95 |
},_normalizeVolume:function(vol){ |
96 |
if(vol>1){ |
97 |
while(vol>1){ |
98 |
vol*=0.1;
|
99 |
} |
100 |
} |
101 |
return vol;
|
102 |
},_normalizeUrl:function(_13){ |
103 |
if(_13&&(_13.toLowerCase().indexOf("http")<0||_13.indexOf("/")==0)){ |
104 |
var loc=window.location.href.split("/"); |
105 |
loc.pop(); |
106 |
loc=loc.join("/")+"/"; |
107 |
_13=loc+_13; |
108 |
} |
109 |
return _13;
|
110 |
},destroy:function(){ |
111 |
if(!this.flashMedia){ |
112 |
this._cons.push(dojo.connect(this,"onLoad",this,"destroy")); |
113 |
return;
|
114 |
} |
115 |
dojo.forEach(this._subs,function(s){ |
116 |
dojo.unsubscribe(s); |
117 |
}); |
118 |
dojo.forEach(this._cons,function(c){ |
119 |
dojo.disconnect(c); |
120 |
}); |
121 |
this._flashObject.destroy();
|
122 |
}}); |
123 |
} |