+ _onLoadBufferComplete : function( e ){
+ var loader = this.loader,
+ buffer = loader.buffer;
+
+ e && loader[ 'unlisten' ]( X_EVENT_COMPLETE, this, this._onLoadBufferComplete );
+
+ if ( !buffer ) {
+ this.error = loader.error;
+
+ this.target[ 'dispatch' ]({
+ type : X_EVENT_ERROR,
+ error : loader.error,
+ message : loader.error === 1 ?
+ 'load buffer network error' :
+ 'buffer decode error'
+ });
+ this[ 'kill' ]();
+ return;
+ };
+
+ this.buffer = buffer;
+ this.duration = buffer.duration * 1000;
+
+ this.target[ 'asyncDispatch' ]( X_EVENT_READY );
+
+ console.log( 'WebAudio buffer ready' );
+
+ this.autoplay && X_Timer_once( 16, this, this.play );
+
+ },