X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F07_audio%2F10_XAudioSprite.js;h=23ff7e5e230901225428cce321f36c23d0a592ee;hb=34431df46635079c1ce6626c9caf1456f88e91bd;hp=cd11ea6bbd1a40a0990eb44790bc8561e6fbc30a;hpb=ada5c01a35945aced14a0f6b159035cf76668670;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/07_audio/10_XAudioSprite.js b/0.6.x/js/07_audio/10_XAudioSprite.js index cd11ea6..23ff7e5 100644 --- a/0.6.x/js/07_audio/10_XAudioSprite.js +++ b/0.6.x/js/07_audio/10_XAudioSprite.js @@ -114,7 +114,7 @@ X[ 'AudioSprite' ][ 'needTouchFirst' ] = X_AudioSprite_needTouchFirst; X[ 'AudioSprite' ][ 'enableMultiTrack' ] = !X_AudioSprite_disableMultiTrack; // 再生が終わっているもの、終わりかけのものを探す -// TODO 終わりかけのもの、と一番古いもの、どちらを再利用するか?これ以上に細かい実装を望む場合は X.Audio.Sprite は使わず自力で実装 +// TODO 終わりかけのもの、と一番古いもの、どちらを再利用するか?これ以上に細かい実装を望む場合は X.AudioSprite は使わず自力で実装 function X_AudioSprite_getTrackEnded(){ var tracks = X_AudioSprite_TEMP.tracks, l = tracks.length, @@ -199,7 +199,7 @@ X_AudioSprite_members = track = X_AudioSprite_TEMP.bgmTrack = tracks[ 0 ]; }; - if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ).playing ){ + if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_WAITING, X_EVENT_MEDIA_SEEKING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ).playing ){ track.setState({ 'loop' : true, 'looped' : X_AudioSprite_TEMP.bgmLooped, @@ -219,7 +219,7 @@ X_AudioSprite_members = if( 1 < tracks.length ){ track = X_AudioSprite_getTrackEnded( X_AudioSprite_TEMP.bgmPlaying ); track - [ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ) + [ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_WAITING, X_EVENT_MEDIA_SEEKING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ) .setState( { 'looped' : false } ); track.play( preset[ 0 ], preset[ 1 ], true, 0, X_AudioSprite_lengthSilence ); } else { @@ -231,7 +231,7 @@ X_AudioSprite_members = }; track = tracks[ 0 ]; - if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ).playing ){ + if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_WAITING, X_EVENT_MEDIA_SEEKING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ).playing ){ track.setState({ 'loop' : true, 'looped' : false, @@ -259,6 +259,7 @@ X_AudioSprite_members = */ 'pause' : function( uid ){ var track = X_AudioSprite_TEMP.tracks[ uid ]; + if( X_AudioSprite_TEMP.bgmTrack === track ){ X_AudioSprite_TEMP.bgmPosition = track.currentTime(); X_AudioSprite_TEMP.bgmPlaying = false; @@ -378,7 +379,7 @@ function X_AudioSprite_backendHandler( e ){ }; if( X_AudioSprite_needTouchFirst ){ - if( name === 'Web Audio' ){ + if( name === 'WebAudio' ){ _e[ 'needTouchForPlay' ] = true; } else { _e[ 'needTouchForLoad' ] = true; @@ -427,6 +428,10 @@ function X_AudioSprite_handleEvent( e ){ case X_EVENT_MEDIA_PLAYING : ( e.target === X_AudioSprite_TEMP.bgmTrack || !e.target.looped ) && this[ 'asyncDispatch' ]( X_EVENT_MEDIA_PLAYING ); break; + case X_EVENT_MEDIA_WAITING : + case X_EVENT_MEDIA_SEEKING : + ( e.target === X_AudioSprite_TEMP.bgmTrack || !e.target.looped ) && this[ 'asyncDispatch' ]( e.type ); + break; case X_EVENT_MEDIA_BEFORE_LOOP : if( e.target === X_AudioSprite_TEMP.bgmTrack ){