OSDN Git Service

Version 0.6.178, fix X.KB for IE5-, X.HTMLAudio for ChromeWV & AOSP.
[pettanr/clientJs.git] / 0.6.x / js / 07_audio / 10_XAudioSprite.js
index cd11ea6..23ff7e5 100644 (file)
@@ -114,7 +114,7 @@ X[ 'AudioSprite' ][ 'needTouchFirst'   ] = X_AudioSprite_needTouchFirst;
 X[ 'AudioSprite' ][ 'enableMultiTrack' ] = !X_AudioSprite_disableMultiTrack;\r
 \r
 // 再生が終わっているもの、終わりかけのものを探す\r
-// TODO 終わりかけのもの、と一番古いもの、どちらを再利用するか?これ以上に細かい実装を望む場合は X.Audio.Sprite は使わず自力で実装\r
+// TODO 終わりかけのもの、と一番古いもの、どちらを再利用するか?これ以上に細かい実装を望む場合は X.AudioSprite は使わず自力で実装\r
 function X_AudioSprite_getTrackEnded(){\r
        var tracks  = X_AudioSprite_TEMP.tracks,\r
                l = tracks.length,\r
@@ -199,7 +199,7 @@ X_AudioSprite_members =
                                                track = X_AudioSprite_TEMP.bgmTrack = tracks[ 0 ];\r
                                        };\r
                                        \r
-                                       if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ).playing ){\r
+                                       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 ){\r
                                                track.setState({\r
                                                                'loop'          : true,\r
                                                                'looped'        : X_AudioSprite_TEMP.bgmLooped,\r
@@ -219,7 +219,7 @@ X_AudioSprite_members =
                                        if( 1 < tracks.length ){\r
                                                track = X_AudioSprite_getTrackEnded( X_AudioSprite_TEMP.bgmPlaying );\r
                                                track\r
-                                                       [ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent )\r
+                                                       [ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_WAITING, X_EVENT_MEDIA_SEEKING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent )\r
                                                        .setState( { 'looped' : false } );\r
                                                track.play( preset[ 0 ], preset[ 1 ], true, 0, X_AudioSprite_lengthSilence );\r
                                        } else {\r
@@ -231,7 +231,7 @@ X_AudioSprite_members =
                                                };\r
                                                track = tracks[ 0 ];\r
                                        \r
-                                               if( track[ 'listen' ]( [ X_EVENT_MEDIA_PLAYING, X_EVENT_MEDIA_BEFORE_LOOP ], this, X_AudioSprite_handleEvent ).playing ){\r
+                                               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 ){\r
                                                        track.setState({\r
                                                                        'loop'          : true,\r
                                                                        'looped'        : false,\r
@@ -259,6 +259,7 @@ X_AudioSprite_members =
                 */\r
                'pause' : function( uid ){\r
                        var track = X_AudioSprite_TEMP.tracks[ uid ];\r
+                       \r
                        if( X_AudioSprite_TEMP.bgmTrack === track ){\r
                                X_AudioSprite_TEMP.bgmPosition = track.currentTime();\r
                                X_AudioSprite_TEMP.bgmPlaying  = false;\r
@@ -378,7 +379,7 @@ function X_AudioSprite_backendHandler( e ){
                        };\r
                        \r
                        if( X_AudioSprite_needTouchFirst ){\r
-                               if( name === 'Web Audio' ){\r
+                               if( name === 'WebAudio' ){\r
                                        _e[ 'needTouchForPlay' ] = true;\r
                                } else {\r
                                        _e[ 'needTouchForLoad' ] = true;\r
@@ -427,6 +428,10 @@ function X_AudioSprite_handleEvent( e ){
                case X_EVENT_MEDIA_PLAYING :\r
                        ( e.target === X_AudioSprite_TEMP.bgmTrack || !e.target.looped ) && this[ 'asyncDispatch' ]( X_EVENT_MEDIA_PLAYING );\r
                        break;\r
+               case X_EVENT_MEDIA_WAITING :\r
+               case X_EVENT_MEDIA_SEEKING :\r
+                       ( e.target === X_AudioSprite_TEMP.bgmTrack || !e.target.looped ) && this[ 'asyncDispatch' ]( e.type );\r
+                       break;\r
                \r
                case X_EVENT_MEDIA_BEFORE_LOOP :\r
                        if( e.target === X_AudioSprite_TEMP.bgmTrack ){\r