Який підхід?
Ви можете відтворювати аудіо з <audio>тегом або <object>або <embed>. Ледаче завантаження (завантажуйте, коли вам це потрібно), звук є найкращим підходом, якщо його розмір невеликий. Ви можете динамічно створювати аудіоелемент, коли він завантажується, ви можете запускати його .play()та призупиняти .pause().
Речі, якими ми користувались
Ми використаємо canplayподію, щоб виявити, що наш файл готовий до відтворення.
Немає .stop()функції для звукових елементів. Ми можемо лише призупинити їх. І коли ми хочемо розпочати з початку звуковий файл, ми змінюємо його .currentTime. Ми використаємо цей рядок у нашому прикладі audioElement.currentTime = 0;. Для досягнення .stop()функції ми спочатку призупиняємо файл, а потім скидаємо час.
Ми можемо знати довжину звукового файлу та поточний час відтворення. Ми вже дізналися .currentTimeвище, щоб дізнатись, яку довжину ми використовуємо .duration.
Приклад керівництва
- Коли документ готовий, ми динамічно створюємо звуковий елемент
- Ми встановлюємо джерело звуку, який хочемо відтворити.
- Для повторного запуску файлу ми використали подію „закінчилось”.
Коли currentTime дорівнює його тривалості, аудіофайл перестане відтворюватися. Кожного разу, коли ви використовуєте play(), це починається спочатку.
- Ми використовували
timeupdateподію для оновлення поточного часу, коли звук .currentTimeзмінюється.
- Ми використовували
canplayподію для оновлення інформації, коли файл готовий до відтворення.
- Ми створили кнопки для відтворення, паузи, перезапуску.
$(document).ready(function() {
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'http://www.soundjay.com/misc/sounds/bell-ringing-01.mp3');
audioElement.addEventListener('ended', function() {
this.play();
}, false);
audioElement.addEventListener("canplay",function(){
$("#length").text("Duration:" + audioElement.duration + " seconds");
$("#source").text("Source:" + audioElement.src);
$("#status").text("Status: Ready to play").css("color","green");
});
audioElement.addEventListener("timeupdate",function(){
$("#currentTime").text("Current second:" + audioElement.currentTime);
});
$('#play').click(function() {
audioElement.play();
$("#status").text("Status: Playing");
});
$('#pause').click(function() {
audioElement.pause();
$("#status").text("Status: Paused");
});
$('#restart').click(function() {
audioElement.currentTime = 0;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<h2>Sound Information</h2>
<div id="length">Duration:</div>
<div id="source">Source:</div>
<div id="status" style="color:red;">Status: Loading</div>
<hr>
<h2>Control Buttons</h2>
<button id="play">Play</button>
<button id="pause">Pause</button>
<button id="restart">Restart</button>
<hr>
<h2>Playing Information</h2>
<div id="currentTime">0</div>
</body>