EventListener и аудио события, вызывающие ошибки? - PullRequest
1 голос
/ 21 ноября 2011

Я сталкиваюсь с досадной ошибкой, в основном я использую сторонний редактор для запуска простой игры, я запускаю аудиофайл в начале сцены, и после того, как аудио закончилось, я хочуgoToNextScene (), который является встроенной функцией.Я использую библиотеку Buzz JavaScript.Однако я сталкиваюсь с проблемой с этим.если я присоединяю слушателя событий непосредственно к звуковой переменной, я получаю ошибку «undefined is not function».

var SceneSound = new buzz.sound(".../something.m4a");
SceneSound.play();
SceneSound.addEventListener('ended', checkEnding, false);
function checkEnding() {

    console.log("TEST");
    controller.goToNextScene();
}

и если я сначала запрашиваю звуковой объект, я получаю ошибку NULL

var SceneSound = new buzz.sound(".../something.m4a");
SceneSound.play();
var objAudio = document.querySelector("#SceneSound audio");
SceneSound.addEventListener('ended', checkEnding, false);

function checkEnding() {

    console.log("TEST");
    controller.goToNextScene();
}

Звук воспроизводится и все, просто подключение EventListener вызывает ошибку.Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 18 июня 2012

Вы забыли упомянуть свой браузер. Воспроизведение аудио связано с браузером. Также не используйте сторонние библиотеки - используйте Audio TAG напрямую.

Это пример:

function strNS(i){
switch (i){
    case 0 : return "EMPTY";
    case 1 : return "IDLE";
    case 2 : return "LOADING";
    case 3 : return "NO SOURCE";
} 
}

function strRS(i){
switch (i){
    case 0 : return "NOTHING";
    case 1 : return "METADATA";
    case 2 : return "CURRENT_DATA";
    case 3 : return "FUTURE_DATA";
    case 4 : return "ENOUGH_DATA";
} 
}

// Event Handler
function eh(e){

//console.log( "NS:" + strNS(e.currentTarget.networkState) + " RS:" +      strRS(e.currentTarget.readyState));

}

function ensureEvent(obj, prop){

if (obj.hasOwnProperty('on' + prop)){
    console.info(a + " does support '" + prop + "'")
    obj.addEventListener(prop, eh);

}else{
    console.log(a + " does not support '" + prop + "'");
}


}


var a = new Audio();

a.autoplay = true;
a.controls = true;

ensureEvent (a, 'loadstart');
ensureEvent (a, 'progress');
ensureEvent (a, 'suspend');
ensureEvent (a, 'load');
ensureEvent (a, 'abort');
ensureEvent (a, 'error');
ensureEvent (a, 'emptied');
ensureEvent (a, 'stalled');
ensureEvent (a, 'play');
ensureEvent (a, 'pause');
ensureEvent (a, 'loadedmetadata');
ensureEvent (a, 'loadeddata');
ensureEvent (a, 'waiting');
ensureEvent (a, 'playing');
ensureEvent (a, 'canplay');
ensureEvent (a, 'canplaythrough');
ensureEvent (a, 'seeking');
ensureEvent (a, 'timeupdate');
ensureEvent (a, 'ended');
ensureEvent (a, 'ratechange');
ensureEvent (a, 'durationchange');

a.src = "blablabla.mp3";
a.play();
...