*/\r
\r
var X_Audio_HTMLAudio_playTrigger =\r
+ 6 <= X_UA.iOS ? 'loadeddata' :\r
X_UA.iOS ? 'suspend' :\r
X_UA.AndroidBrowser2 ? 'stalled' : // Android 2.3.5(SBM101SH) では stalled は発生しない,,,\r
X_UA.AndroidBrowser4 ? 'loadeddata' : \r
X_UA.OperaMobile || X_UA.OperaTablet ? 'loadeddata' : 'canplay',\r
X_Audio_HTMLAudioWrapper,\r
+ X_Audio_constructor = window.Audio || window.HTMLAudioElement,\r
X_Audio_rawAudio,\r
// Opera Mobile 12 android4.4.4 & 2.3.5 は 2回目以降の currentTime へのセットで currentTime が更新されなくなるため、タイマーを使用する\r
X_Audio_HTMLAudioWrapper_currentTimeFix = !!X_UA.OperaMobile || !!X_UA.OperaTablet, // || ( X_UA.WinPhone && X_UA.IE9 ),\r
\r
X_Audio_codecs;\r
\r
-if( window.HTMLAudioElement && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){\r
+if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){\r
//http://himaxoff.blog111.fc2.com/blog-entry-97.html\r
//引数なしで new Audio() とすると、Operaでエラーになるそうなので注意。\r
- X_Audio_rawAudio = new Audio( '' );\r
- \r
- X_Audio_codecs = {\r
- mp3 : X_Audio_rawAudio.canPlayType('audio/mpeg'),\r
- opus : X_Audio_rawAudio.canPlayType('audio/ogg; codecs="opus"'),\r
- ogg : X_Audio_rawAudio.canPlayType('audio/ogg; codecs="vorbis"'),\r
- wav : X_Audio_rawAudio.canPlayType('audio/wav; codecs="1"'),\r
- aac : X_Audio_rawAudio.canPlayType('audio/aac'),\r
- m4a : X_Audio_rawAudio.canPlayType('audio/x-m4a') + X_Audio_rawAudio.canPlayType('audio/m4a') + X_Audio_rawAudio.canPlayType('audio/aac'),\r
- mp4 : X_Audio_rawAudio.canPlayType('audio/x-mp4') + X_Audio_rawAudio.canPlayType('audio/mp4') + X_Audio_rawAudio.canPlayType('audio/aac'),\r
- weba : X_Audio_rawAudio.canPlayType('audio/webm; codecs="vorbis"')\r
- };\r
- \r
- (function( k, v ){\r
- for( k in X_Audio_codecs ){\r
- if( X_EMPTY_OBJECT[ k ] ) continue;\r
- v = X_Audio_codecs[ k ];\r
- X_Audio_codecs[ k ] = v && v.split( 'no' ).join( '' );\r
- console.log( k + ' ' + X_Audio_codecs[ k ] );\r
+ X_Audio_rawAudio = new X_Audio_constructor( '' );\r
+\r
+ if( X_Audio_rawAudio.canPlayType ){\r
+ X_Audio_codecs = {\r
+ mp3 : X_Audio_rawAudio.canPlayType('audio/mpeg'),\r
+ opus : X_Audio_rawAudio.canPlayType('audio/ogg; codecs="opus"'),\r
+ ogg : X_Audio_rawAudio.canPlayType('audio/ogg; codecs="vorbis"'),\r
+ wav : X_Audio_rawAudio.canPlayType('audio/wav; codecs="1"'),\r
+ aac : X_Audio_rawAudio.canPlayType('audio/aac'),\r
+ m4a : X_Audio_rawAudio.canPlayType('audio/x-m4a') + X_Audio_rawAudio.canPlayType('audio/m4a') + X_Audio_rawAudio.canPlayType('audio/aac'),\r
+ mp4 : X_Audio_rawAudio.canPlayType('audio/x-mp4') + X_Audio_rawAudio.canPlayType('audio/mp4') + X_Audio_rawAudio.canPlayType('audio/aac'),\r
+ weba : X_Audio_rawAudio.canPlayType('audio/webm; codecs="vorbis"')\r
};\r
- })();\r
- \r
+ (function( k, v ){\r
+ for( k in X_Audio_codecs ){\r
+ if( X_EMPTY_OBJECT[ k ] ) continue;\r
+ v = X_Audio_codecs[ k ];\r
+ X_Audio_codecs[ k ] = v && v.split( 'no' ).join( '' );\r
+ console.log( k + ' ' + X_Audio_codecs[ k ] );\r
+ };\r
+ })();\r
+ } else {\r
+ // iOS3.2.3\r
+ X_Audio_codecs = {\r
+ mp3 : X_UA.IE || X_UA.Chrome || ( X_UA.Windows && X_UA.Safari ),\r
+ ogg : 5 <= X_UA.Gecko || X_UA.Chrome || X_UA.Opera,\r
+ wav : X_UA.Gecko || X_UA.Opera || ( X_UA.Windows && X_UA.Safari ),\r
+ aac : X_UA.IE || X_UA.WebKit,\r
+ m4a : X_UA.IE || X_UA.WebKit,\r
+ mp4 : X_UA.IE || X_UA.WebKit,\r
+ weba : 2 <= X_UA.Gecko || 10.6 <= X_UA.Opera // firefox4+(Gecko2+)\r
+ };\r
+ };\r
\r
X_Audio_HTMLAudioWrapper = X.EventDispatcher.inherits(\r
'X.AV.HTML5AudioWrapper',\r
document.body.appendChild( this._rawObject );\r
//this._rawObject.load();\r
} else {\r
- this._rawObject = X_Audio_rawAudio || new Audio( source );// X_Doc_create( 'audio', { src : source } ).appendToRoot();//( X.X_Node_systemNode );\r
+ this._rawObject = X_Audio_rawAudio || new X_Audio_constructor( source );// X_Doc_create( 'audio', { src : source } ).appendToRoot();//( X.X_Node_systemNode );\r
this._rawObject.autobuffer = false;\r
this._src = source;\r
};\r
if( X_Audio_HTMLAudioWrapper_badOperaAndroid ){\r
X_Audio_HTMLAudioWrapper_badOperaAndroid && alert( 12 );\r
X_EventDispatcher_toggleAllEvents( this, false );\r
- this._rawObject = new Audio( X_URL_toAbsolutePath( source ) );\r
+ this._rawObject = new X_Audio_constructor( X_URL_toAbsolutePath( source ) );\r
//X_EventDispatcher_toggleAllEvents( this, true );\r
} else {\r
X_Audio_rawAudio.src = source;\r
};\r
\r
- //this._rawObject = new Audio( X_URL_toAbsolutePath( source ) );\r
+ //this._rawObject = new X_Audio_constructor( X_URL_toAbsolutePath( source ) );\r
/*!X_Audio_Sprite_needTouchFirst && */ X_Audio_rawAudio.load(); // 要る?\r
X_Audio_rawAudio = null;\r
};\r