Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / av / _Media.js @ 10

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
}