FLAudio.js 3.1 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, 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. if(!dojo._hasResource["dojox.av.FLAudio"]){dojo._hasResource["dojox.av.FLAudio"]=true;dojo.provide("dojox.av.FLAudio");dojo.experimental("dojox.av.FLAudio");dojo.require("dijit._Widget");dojo.require("dojox.embed.Flash");dojo.require("dojox.av._Media");dojo.require("dojox.timing.doLater");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){dojo.global.swfIsInHTML=function(){return true;};dojo.mixin(this,_1||{});if(!this.id){this.id="flaudio_"+new Date().getTime();}this.domNode=dojo.doc.createElement("div");dojo.style(this.domNode,{postion:"relative",width:"1px",height:"1px",top:"1px",left:"1px"});dojo.body().appendChild(this.domNode);this.init();},init:function(){this._subs=[];this.initialVolume=this._normalizeVolume(this.initialVolume);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}};this._sub("mediaError","onError");this._sub("filesProgress","onLoadStatus");this._sub("filesAllLoaded","onAllLoaded");this._sub("mediaPosition","onPlayStatus");this._sub("mediaMeta","onID3");this._flashObject=new dojox.embed.Flash(_2,this.domNode);this._flashObject.onError=function(_3){console.warn("Flash Error:",_3);alert(_3);};this._flashObject.onLoad=dojo.hitch(this,function(_4){this.flashMedia=_4;this.isPlaying=this.autoPlay;this.isStopped=!this.autoPlay;this.onLoad(this.flashMedia);});},load:function(_5){if(dojox.timing.doLater(this.flashMedia,this)){return false;}if(!_5.url){throw new Error("An url is required for loading media");return false;}else{_5.url=this._normalizeUrl(_5.url);}this.flashMedia.load(_5);return _5.url;},doPlay:function(_6){this.flashMedia.doPlay(_6);},pause:function(_7){this.flashMedia.pause(_7);},stop:function(_8){this.flashMedia.doStop(_8);},setVolume:function(_9){this.flashMedia.setVolume(_9);},setPan:function(_a){this.flashMedia.setPan(_a);},getVolume:function(_b){return this.flashMedia.getVolume(_b);},getPan:function(_c){return this.flashMedia.getPan(_c);},onError:function(_d){console.warn("SWF ERROR:",_d);},onLoadStatus:function(_e){},onAllLoaded:function(){},onPlayStatus:function(_f){},onLoad:function(){},onID3:function(evt){},destroy:function(){if(!this.flashMedia){this._cons.push(dojo.connect(this,"onLoad",this,"destroy"));return;}dojo.forEach(this._subs,function(s){dojo.unsubscribe(s);});dojo.forEach(this._cons,function(c){dojo.disconnect(c);});this._flashObject.destroy();},_sub:function(_10,_11){dojo.subscribe(this.id+"/"+_10,this,_11);},_normalizeVolume:function(vol){if(vol>1){while(vol>1){vol*=0.1;}}return vol;},_normalizeUrl:function(_12){if(_12&&_12.toLowerCase().indexOf("http")<0){var loc=window.location.href.split("/");loc.pop();loc=loc.join("/")+"/";_12=loc+_12;}return _12;}});}