Windows Phone上的專案若只有播放單一音效的需求,可考慮採用播放系統提示聲的API,因為此API不會造成延遲問題,而且可以自行更換提示聲音效檔:
navigator.notification.beep( 1 ); // 播放提示音效一次
至於其他平台,可以先將要播放的音效檔定義在html檔,而後再呼叫使用。譬如說要播放click.wav這個音效檔,可以在html檔這麼定義:
<audio id="clickAudio" src="click.wav" preload="auto"></audio>
然後在要播放的地方加入下面這一句:
document.getElementById( "clickAudio" ).play(); // 播放物件
如此便能播放了。實測下來,在Chrome和Firefox OS上播放順暢,不過在IOS上第一次播放會略有延遲,仍不夠理想,需要再想辦法改進改進。
至於Android系統,很遺憾不支援上面的做法,需要呼叫PhoneGap API,操作如下:
1. 撰寫取得檔案路徑的javascript funciton:
1 2 3 4 5 6 7 | // 取得Phonegap可識別的檔案路徑 . function getPhoneGapPath() { var path = window.location.pathname; path = path.substr( path, path.length - 10 ); return 'file://' + path; } |
2. 撰寫透過PhoneGap API播放音效的javascript function:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 藉由PhoneGap API來播放音效檔 function playAudio( url ) { // Play the audio file at url var my_media = new Media( url, // success callback function() { console.log( "playAudio():Audio Success" ); }, // error callback function( err ) { console.log( "playAudio():Audio Error: " + err ); } ); my_media.play(); // 開始播放 //my_media.stop(); //my_media.release(); } |
3. 將音效檔(範例中的檔名為click.wav)丟入存放index.html的資料夾,而後在需要播放音效的地方呼叫剛剛寫的function:
playAudio( getPhoneGapPath() + "click.wav" );
沒有留言:
張貼留言