bgmName : '',\r
bgmLooped : false,\r
bgmPlaying : false,\r
- event : null\r
+ tmpEvent : null\r
},\r
X_AudioSprite,\r
X_AudioSprite_numTracks,\r
\r
X_Audio_startDetectionBackend(\r
X_Audio_BACKENDS[ 0 ],\r
- X_AudioSprite,\r
+ X_AudioSprite, // dispatcher として\r
X_Array_copy( urls ),\r
{\r
'volume' : 0 <= volume && volume <= 1 ? volume : 1,\r
// HTMLAudio\r
( e[ 'needTouchForLoad' ] && ( _e[ 'needTouchForLoad' ] = true ) )\r
){\r
- X_AudioSprite_TEMP.event = _e;\r
+ X_AudioSprite_TEMP.tmpEvent = _e;\r
last[ 'listenOnce' ]( X_EVENT_MEDIA_WAIT_FOR_TOUCH, X_AudioSprite_backendHandler );\r
} else {\r
X_AudioSprite[ 'asyncDispatch' ]( _e );\r
\r
case X_EVENT_MEDIA_WAIT_FOR_TOUCH :\r
// TODO 全ての track の MEDIA_WAIT_FOR_TOUCH で!\r
- X_AudioSprite[ 'asyncDispatch' ]( X_AudioSprite_TEMP.event );\r
- delete X_AudioSprite_TEMP.event;\r
+ X_AudioSprite[ 'asyncDispatch' ]( X_AudioSprite_TEMP.tmpEvent );\r
+ delete X_AudioSprite_TEMP.tmpEvent;\r
break;\r
\r
case X_EVENT_PROGRESS :\r
\r
case X_EVENT_READY :\r
console.log( 'X.AudioSprite - Ready!' );\r
+ \r
+ if( X_AudioSprite_TEMP.tmpEvent ){\r
+ // このタイミングで tmpEvent が存在する場合は、タッチをスキップして Web Audio が再生可能になった\r
+ // つまり他の Web Audio インスタンスでタッチによる再生が開始され、自身も再生可能になった\r
+ \r
+ _e = X_AudioSprite_TEMP.tmpEvent;\r
+ _e[ 'needTouchForPlay' ] = false;\r
+ \r
+ X_AudioSprite\r
+ [ 'unlisten' ]( X_EVENT_MEDIA_WAIT_FOR_TOUCH, X_AudioSprite_backendHandler )\r
+ [ 'asyncDispatch' ]( _e );\r
+ \r
+ delete X_AudioSprite_TEMP.tmpEvent;\r
+ }; \r
+ \r
for( i = 0; i < X_AudioSprite_numTracks; ++i ){\r
track = X_AudioSprite_TEMP.tracks[ i ];\r
( track.autoplay || track._playReserved ) && track.actualPlay();\r