+ case X_EVENT_BACKEND_READY :\r
+ \r
+ backend = X_Audio_BACKENDS[ e[ 'backendID' ] ];\r
+ option = e[ 'option' ];\r
+ \r
+ this[ 'unlisten' ]( X_EVENT_BACKEND_NONE, X_AudioSprite_backendHandler );\r
+ this[ 'source' ] = src = e[ 'source' ];\r
+ this[ 'backendName' ] = name = backend.backendName;\r
+ \r
+ for( i = 0; i < X_Audio_Sprite_numTracks; ++i ){\r
+ if( X_Audio_Sprite_useVideo || ( i === 1 && X_Audio_Sprite_useVideoForMulti ) ){\r
+ option[ 'useVideo' ] = true;\r
+ };\r
+ // Audiobackend の owner として null を渡すとAudioBackend 自身へ dispatch する\r
+ X_Audio_Sprite_TEMP.tracks.push( last = backend.klass( null, e[ 'source' ], option ) );\r
+ };\r
+\r
+ _e = {\r
+ 'type' : X_EVENT_BACKEND_READY,\r
+ 'source' : src,\r
+ 'backendName' : name\r
+ };\r
+ \r
+ if( X_Audio_Sprite_needTouchFirst ){\r
+ if( name === 'Web Audio' ){\r
+ _e[ 'needTouchForPlay' ] = true;\r
+ } else {\r
+ _e[ 'needTouchForLoad' ] = true;\r
+ };\r
+ };\r
+ this[ 'asyncDispatch' ]( _e );\r
+ \r
+ last[ 'listenOnce' ]( X_EVENT_READY, this, X_AudioSprite_backendHandler );\r
+\r
+ // READY, needTouchForPlay, needTouchForLoad\r
+ if( X_Audio_HTMLAudioWrapper_durationFix ){\r
+ for( i = 0; i < X_Audio_Sprite_TEMP.tracks.length; ++i ){\r
+ this[ 'pause' ]( i );\r
+ };\r
+ };\r
+ \r
+ return X_Callback_STOP_NOW;\r
+\r
+ case X_EVENT_BACKEND_NONE :\r
+ this[ 'unlisten' ]( X_EVENT_BACKEND_READY, this, X_AudioSprite_backendHandler )\r
+ [ 'asyncDispatch' ]( X_EVENT_BACKEND_NONE );\r
+ return X_Callback_STOP_NOW;\r
+ \r
+ case X_EVENT_READY :\r
+ console.log( 'X.AudioSprite - Ready!' );\r
+ \r
+ if( X_Audio_Sprite_needTouchAndroid ){\r
+ for( i = 0; i < X_Audio_Sprite_TEMP.tracks.length; ++i ){\r
+ this[ 'pause' ]( i );\r
+ };\r
+ e.target[ 'listenOnce' ]( X_EVENT_MEDIA_PLAYING, this, this.asyncDispatch, [ X_EVENT_READY ] ); // Android 標準ブラウザ\r
+ return;\r
+ };\r
+ this[ 'asyncDispatch' ]( X_EVENT_READY );\r