* iframe 内で生成して、Audio Sprite の preset で再生できないか?\r
*/\r
var X_Audio_Sprite_shouldUse = window.HTMLAudioElement && ( X_UA[ 'iOS' ] || X_UA[ 'AndroidBrowser' ] || X_UA[ 'OperaMobile' ] || X_UA[ 'OperaTablet' ] ), // Flash がない\r
- X_Audio_Sprite_useVideoForMulti = 4 <= X_UA[ 'AndroidBrowser' ] && 534.3 < X_UA[ 'AndroidBrowserWebkit' ], // ドスパラパッドはビデオのインライン再生が不可 \r
+ X_Audio_Sprite_useVideoForMulti = 4 <= X_UA[ 'AndroidBrowser' ] && 534.3 < X_UA[ 'AndroidWebkit' ], // ドスパラパッドはビデオのインライン再生が不可 \r
X_Audio_Sprite_needTouchAndroid = X_Audio_Sprite_useVideoForMulti, \r
X_Audio_Sprite_needTouchFirst = X_UA[ 'iOS' ] || X_Audio_Sprite_needTouchAndroid || ( X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ),\r
- X_Audio_Sprite_enableMultiTrack = !( X_UA[ 'iOS' ] && !X_Audio_WebAudio_context ) && !( X_UA[ 'AndroidBrowser4' ] && X_UA[ 'AndroidBrowserWebkit' ] <= 534.3 ),\r
+ X_Audio_Sprite_enableMultiTrack = !( X_UA[ 'iOS' ] && !X_Audio_WebAudio_context ) && !( X_UA[ 'AndroidBrowser4' ] && X_UA[ 'AndroidWebkit' ] <= 534.3 ) && !( X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ),\r
X_Audio_Sprite_enableVolume = window.HTMLAudioElement && ( !X_UA[ 'iOS' ] && !X_UA[ 'AndroidBrowser' ] && !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] ), // TODO fennec は 25以上\r
X_Audio_Sprite_maxTracks = !X_Audio_Sprite_enableMultiTrack ? 1 : X_Audio_Sprite_useVideoForMulti ? 2 : 9,\r
X_Audio_Sprite_lengthSilence = 10000, // 一番最初の無音部分の長さ\r
},\r
k, i, v, track; \r
\r
- if( X_Audio_Sprite_instance ){\r
- X_Audio_Sprite_instance[ 'kill' ]();\r
- } else {\r
+ if( !X_Audio_Sprite_instance ){\r
X_Audio_Sprite_instance = X_Class_override( X_EventDispatcher(), X_Audio_Sprite_members );\r
X_ViewPort[ 'listen' ]( [ X_EVENT_VIEW_ACTIVATE, X_EVENT_VIEW_DEACTIVATE ], X_Audio_Sprite_instance, X_Audio_Sprite_handleEvent );\r
};\r
for( k in setting ){\r
v = setting[ k ];\r
if( X_Type_isArray( v ) && v !== urls ){\r
- v = X_Object_cloneArray( v );\r
+ v = X_Array_copy( v );\r
for( i = v.length; i; ){\r
--i;\r
if( i !== 2 ) v[ i ] = X_AudioWrapper_timeStringToNumber( v[ i ] );\r
};\r
};\r
\r
- X_Audio_startDetectionBackend( X_Audio_BACKENDS[ 0 ], X_Audio_Sprite_instance, X_Object_cloneArray( urls ), option );\r
+ X_Audio_startDetectionBackend( X_Audio_BACKENDS[ 0 ], X_Audio_Sprite_instance, X_Array_copy( urls ), option );\r
\r
X_Audio_Sprite_instance[ 'listenOnce' ]( [ X_EVENT_BACKEND_READY, X_EVENT_BACKEND_NONE ], X_AudioSprite_backendHandler );\r
X_Audio_Sprite_instance[ 'listenOnce' ]( X_EVENT_KILL_INSTANCE, X_Audio_Sprite_handleEvent );\r
i = 0, l = tracks.length;\r
for( ; i < l; ++i ){\r
if( X_UA[ 'WinPhone' ] ){\r
- console.log( 'touch -> play()' );\r
+ console.log( 'WinPhone : touch -> play()' );\r
//tracks[ i ].play( 0, X_Audio_Sprite_lengthSilence, true, 0, X_Audio_Sprite_lengthSilence ).seek( 0 );\r
this[ 'pause' ]( i );\r
} else {\r
this[ 'source' ] = src = e[ 'source' ];\r
this[ 'backendName' ] = name = backend.backendName;\r
\r
+ console.log( i + ' / ' + X_Audio_Sprite_numTracks );\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
+ console.dir( backend );\r
+ console.dir( last );\r
};\r
\r
_e = {\r
};\r
this[ 'asyncDispatch' ]( _e );\r
\r
+ console.log( 'AudioSprite - X_EVENT_BACKEND_READY' );\r
+ \r
last[ 'listenOnce' ]( X_EVENT_READY, this, X_AudioSprite_backendHandler );\r
\r
// READY, needTouchForPlay, needTouchForLoad\r
};\r
};\r
\r
- return X_Callback_STOP_NOW;\r
- break;\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
- break;\r
+ return X_CALLBACK_STOP_NOW;\r
\r
case X_EVENT_READY :\r
console.log( 'X.AudioSprite - Ready!' );\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
+ e.target[ 'listenOnce' ]( X_EVENT_MEDIA_PLAYING, this, this[ 'asyncDispatch' ], [ X_EVENT_READY ] ); // Android 標準ブラウザ\r
return;\r
};\r
this[ 'asyncDispatch' ]( X_EVENT_READY );\r
if( X_Audio_Sprite_TEMP.bgmPlaying && !X_Audio_Sprite_TEMP.bgmTrack ){\r
X_Audio_Sprite_TEMP.bgmTrack = e.target;\r
this.play( X_Audio_Sprite_TEMP.bgmName );\r
- return X.Callback.PREVENT_DEFAULT;\r
+ return X_CALLBACK_PREVENT_DEFAULT;\r
};\r
};\r
break;\r