OSDN Git Service

Version 0.6.170, X.Audio is working ADVANCED_OPTIMIZATIONS.
[pettanr/clientJs.git] / 0.6.x / js / 07_audio / 02_XHTMLAudio.js
index 7206221..3972841 100644 (file)
@@ -87,7 +87,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                        _lastCurrentTime : 0,\r
                        _src             : '',\r
                        \r
-                       Constructor : function( target, source, option ){\r
+                       'Constructor' : function( target, source, option ){\r
                                var raw;\r
                                \r
                                this.target  = target || this;\r
@@ -168,7 +168,10 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                \r
                                X_Audio_HTMLAudioWrapper_badOperaAndroid && alert( e.type );\r
                                \r
-                               X_Audio_HTMLAudioWrapper_ieMobile9Fix && e.type !== 'timeupdate' && console.log( e.type );\r
+                               // global に公開\r
+                               window[ '__rawAudio' ] = this[ '_rawObject' ];\r
+                               \r
+                               /* X_Audio_HTMLAudioWrapper_ieMobile9Fix && */ e.type !== 'timeupdate' && console.log( e.type );\r
                                \r
                                switch( e.type ){\r
                                        case 'loadstart' :      //      ブラウザがコンテンツの検索を開始した場合に発生\r
@@ -241,6 +244,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                                delete this.playing;\r
                                                break;\r
        \r
+                                       // TODO firefox で 短い音声でtimeupdate, ended が発火しない\r
                                        case 'timeupdate' :     //      通常の再生が行われ現在の再生位置の変化が起こった場合に発生\r
                                                if( X_Audio_HTMLAudioWrapper_ieMobile9Fix ){\r
                                                        if( this._playForDuration === 1 ){\r
@@ -268,7 +272,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                    if( this.playing ){\r
                                        end = X_AudioWrapper_getEndTime( this );\r
                                        now = this.getActualCurrentTime();\r
-                                       console.log( end + ' / ' + now );\r
+                                       console.log( now + ' / ' + end );\r
                                        if( 0 + end <= 0 + now ){ // なぜか iem9 で必要,,,\r
                                                if( this.autoLoop ){\r
                                                        if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
@@ -365,7 +369,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                begin = this._beginTime = X_AudioWrapper_getStartTime( this, end, true );\r
 \r
                    if( X_Audio_HTMLAudioWrapper_shortPlayFix ){\r
-                       begin -= end - begin > 1000 ? 200 : 400;\r
+                       begin -= ( end - begin > 1000 ) ? 200 : 400;\r
                        begin  = begin < 0 ? 0 : begin;\r
                    };\r
 \r
@@ -385,11 +389,16 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                    };\r
                                this[ '_rawObject' ].play();\r
                                this.playing = true;\r
+                           } else\r
+                           if( X_UA[ 'Gecko' ] ){\r
+                               // Gecko PC + Android でseek時に再生がしばしば止まる問題の修正\r
+                               this[ '_rawObject' ].play();\r
                            };\r
+                           \r
                                //http://himaxoff.blog111.fc2.com/blog-entry-97.html\r
                                //Firefox3.6では一度も play() していない状態で currentTime = 0 を実行するとエラーになる。\r
                                //また、GoogleChrome7 では currentTime = 0 直後に play() すると、pause()した位置前後の音が混ざることがある。(少なくとも自分の環境では)\r
-                               this[ '_rawObject' ].currentTime = this._lastCurrentTime = begin / 1000;\r
+                               this[ '_rawObject' ].currentTime = this._lastCurrentTime = begin / 1000 | 0;\r
 \r
                            console.log( '[HTMLAudio] play ' + begin + ' -> ' + end );\r
                    \r