OSDN Git Service

Version 0.6.130, fix X.Net & X.Audio.
[pettanr/clientJs.git] / 0.6.x / js / 07_audio / 10_XAudioSprite.js
index 717a7c4..6cdc290 100644 (file)
@@ -7,7 +7,7 @@
 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_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_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_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
@@ -205,7 +205,7 @@ X_Audio_Sprite_members = {
                                                track = X_Audio_Sprite_TEMP.bgmTrack = tracks[ 0 ];\r
                                        };\r
                                        \r
-                                       if( track.listen( X.Event.MEDIA_BEFORE_LOOP, this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
+                                       if( track.listen( [ X.Event.MEDIA_PLAYING, X.Event.MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
                                                track\r
                                                        .state( {\r
                                                                loop          : true,\r
@@ -227,7 +227,7 @@ X_Audio_Sprite_members = {
                                        if( 1 < tracks.length ){\r
                                                track = X_Audio_Sprite_getTrackEnded( X_Audio_Sprite_TEMP.bgmPlaying );\r
                                                track\r
-                                                       .listen( X.Event.MEDIA_BEFORE_LOOP, this, X_Audio_Sprite_handleEvent )\r
+                                                       .listen( [ X.Event.MEDIA_PLAYING, X.Event.MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent )\r
                                                        .state( { looped : false } )\r
                                                        .play( preset[ 0 ], preset[ 1 ], true, 0, X_Audio_Sprite_lengthSilence );\r
                                        } else {\r
@@ -239,7 +239,7 @@ X_Audio_Sprite_members = {
                                                };\r
                                                track = tracks[ 0 ];\r
                                        \r
-                                               if( track.listen( X.Event.MEDIA_BEFORE_LOOP, this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
+                                               if( track.listen( [ X.Event.MEDIA_PLAYING, X.Event.MEDIA_BEFORE_LOOP ], this, X_Audio_Sprite_handleEvent ).isPlaying() ){\r
                                                        track\r
                                                                .state( {\r
                                                                        loop          : true,\r
@@ -267,8 +267,8 @@ X_Audio_Sprite_members = {
                                X_Audio_Sprite_TEMP.bgmPlaying  = false;\r
                                X_Audio_Sprite_TEMP.bgmTrack    = null;\r
                        };\r
-                       console.log( 'pause' );\r
                        track && track.play( 0, X_Audio_Sprite_lengthSilence, true, 0, X_Audio_Sprite_lengthSilence ).seek( 0 );\r
+                       this.asyncDispatch( X.Event.MEDIA_PAUSED );\r
                        return this;\r
                },\r
                \r
@@ -352,16 +352,20 @@ function X_Audio_Sprite_handleEvent( e ){
                        break;\r
                \r
                case X.Event.READY :\r
+                       console.log( 'X.AudioSprite - Ready!' );\r
                        if( X_Audio_Sprite_needTouchAndroid ){\r
                                for( i = 0; i < X_Audio_Sprite_TEMP.tracks.length; ++i ){\r
                                        X_Audio_Sprite_instance.pause( i );\r
                                };\r
-                               e.target.listenOnce( X.Event.MEDIA_PLAYING, this, X_Audio_Sprite_handleEvent ); // Android 標準ブラウザ\r
+                               e.target.listenOnce( X.Event.MEDIA_PLAYING, this, this.asyncDispatch, [ X.Event.READY ] ); // Android 標準ブラウザ\r
                                return;\r
                        };\r
-               case X.Event.MEDIA_PLAYING :\r
                        this.asyncDispatch( X.Event.READY );\r
                        break;\r
+                       \r
+               case X.Event.MEDIA_PLAYING :\r
+                       ( e.target === X_Audio_Sprite_TEMP.bgmTrack || !e.target.state().looped ) && this.asyncDispatch( X.Event.MEDIA_PLAYING );\r
+                       break;\r
                \r
                case X.Event.MEDIA_BEFORE_LOOP :\r
                        if( e.target === X_Audio_Sprite_TEMP.bgmTrack ){\r