root / trunk / web / dojo / dojox / av / FLAudio.js @ 10
History | View | Annotate | Download (3.31 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 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.FLAudio"]){ |
||
| 9 | dojo._hasResource["dojox.av.FLAudio"]=true; |
||
| 10 | dojo.provide("dojox.av.FLAudio");
|
||
| 11 | dojo.experimental("dojox.av.FLAudio");
|
||
| 12 | dojo.require("dojox.embed.Flash");
|
||
| 13 | dojo.require("dojox.timing.doLater");
|
||
| 14 | dojo.declare("dojox.av.FLAudio",null,{id:"",initialVolume:0.7,initialPan:0,isDebug:false,statusInterval:200,_swfPath:dojo.moduleUrl("dojox.av","resources/audio.swf"),constructor:function(_1){ |
||
| 15 | dojo.global.swfIsInHTML=function(){ |
||
| 16 | return true; |
||
| 17 | }; |
||
| 18 | dojo.mixin(this,_1||{});
|
||
| 19 | if(!this.id){ |
||
| 20 | this.id="flaudio_"+new Date().getTime(); |
||
| 21 | } |
||
| 22 | this.domNode=dojo.doc.createElement("div"); |
||
| 23 | dojo.style(this.domNode,{postion:"relative",width:"1px",height:"1px",top:"1px",left:"1px"}); |
||
| 24 | dojo.body().appendChild(this.domNode);
|
||
| 25 | this.init();
|
||
| 26 | },init:function(){ |
||
| 27 | this._subs=[];
|
||
| 28 | this.initialVolume=this._normalizeVolume(this.initialVolume); |
||
| 29 | var _2={path:this._swfPath.uri,width:"1px",height:"1px",minimumVersion:9,expressInstall:true,params:{wmode:"transparent"},vars:{id:this.id,autoPlay:this.autoPlay,initialVolume:this.initialVolume,initialPan:this.initialPan,statusInterval:this.statusInterval,isDebug:this.isDebug}}; |
||
| 30 | this._sub("mediaError","onError"); |
||
| 31 | this._sub("filesProgress","onLoadStatus"); |
||
| 32 | this._sub("filesAllLoaded","onAllLoaded"); |
||
| 33 | this._sub("mediaPosition","onPlayStatus"); |
||
| 34 | this._sub("mediaEnd","onComplete"); |
||
| 35 | this._sub("mediaMeta","onID3"); |
||
| 36 | this._flashObject=new dojox.embed.Flash(_2,this.domNode); |
||
| 37 | this._flashObject.onError=function(_3){ |
||
| 38 | console.warn("Flash Error:",_3);
|
||
| 39 | alert(_3); |
||
| 40 | }; |
||
| 41 | this._flashObject.onLoad=dojo.hitch(this,function(_4){ |
||
| 42 | this.flashMedia=_4;
|
||
| 43 | this.isPlaying=this.autoPlay; |
||
| 44 | this.isStopped=!this.autoPlay; |
||
| 45 | this.onLoad(this.flashMedia); |
||
| 46 | }); |
||
| 47 | },load:function(_5){ |
||
| 48 | if(dojox.timing.doLater(this.flashMedia,this)){ |
||
| 49 | return false; |
||
| 50 | } |
||
| 51 | if(!_5.url){
|
||
| 52 | throw new Error("An url is required for loading media"); |
||
| 53 | return false; |
||
| 54 | }else{
|
||
| 55 | _5.url=this._normalizeUrl(_5.url);
|
||
| 56 | } |
||
| 57 | this.flashMedia.load(_5);
|
||
| 58 | return _5.url;
|
||
| 59 | },doPlay:function(_6){ |
||
| 60 | this.flashMedia.doPlay(_6);
|
||
| 61 | },pause:function(_7){ |
||
| 62 | this.flashMedia.pause(_7);
|
||
| 63 | },stop:function(_8){ |
||
| 64 | this.flashMedia.doStop(_8);
|
||
| 65 | },setVolume:function(_9){ |
||
| 66 | this.flashMedia.setVolume(_9);
|
||
| 67 | },setPan:function(_a){ |
||
| 68 | this.flashMedia.setPan(_a);
|
||
| 69 | },getVolume:function(_b){ |
||
| 70 | return this.flashMedia.getVolume(_b); |
||
| 71 | },getPan:function(_c){ |
||
| 72 | return this.flashMedia.getPan(_c); |
||
| 73 | },getPosition:function(_d){ |
||
| 74 | return this.flashMedia.getPosition(_d); |
||
| 75 | },onError:function(_e){ |
||
| 76 | console.warn("SWF ERROR:",_e);
|
||
| 77 | },onLoadStatus:function(_f){ |
||
| 78 | },onAllLoaded:function(){ |
||
| 79 | },onPlayStatus:function(_10){ |
||
| 80 | },onComplete:function(_11){ |
||
| 81 | },onLoad:function(){ |
||
| 82 | },onID3:function(evt){ |
||
| 83 | },destroy:function(){ |
||
| 84 | if(!this.flashMedia){ |
||
| 85 | this._cons.push(dojo.connect(this,"onLoad",this,"destroy")); |
||
| 86 | return;
|
||
| 87 | } |
||
| 88 | dojo.forEach(this._subs,function(s){ |
||
| 89 | dojo.unsubscribe(s); |
||
| 90 | }); |
||
| 91 | dojo.forEach(this._cons,function(c){ |
||
| 92 | dojo.disconnect(c); |
||
| 93 | }); |
||
| 94 | this._flashObject.destroy();
|
||
| 95 | },_sub:function(_12,_13){ |
||
| 96 | dojo.subscribe(this.id+"/"+_12,this,_13); |
||
| 97 | },_normalizeVolume:function(vol){ |
||
| 98 | if(vol>1){ |
||
| 99 | while(vol>1){ |
||
| 100 | vol*=0.1;
|
||
| 101 | } |
||
| 102 | } |
||
| 103 | return vol;
|
||
| 104 | },_normalizeUrl:function(_14){ |
||
| 105 | if(_14&&_14.toLowerCase().indexOf("http")<0){ |
||
| 106 | var loc=window.location.href.split("/"); |
||
| 107 | loc.pop(); |
||
| 108 | loc=loc.join("/")+"/"; |
||
| 109 | _14=loc+_14; |
||
| 110 | } |
||
| 111 | return _14;
|
||
| 112 | }}); |
||
| 113 | } |