1

phonegap アプリのオーディオ マップをまとめようとしています。簡単な文章を作成してルートを作成したい。

物事を絞り込むために、オーディオ ナビゲーションを実行するために連続して再生したいオーディオ要素の配列があります。例えば:

// playList[0].play --> "You are coming from the"
// playList[1].play --> "Reptile House"
// playList[2].play --> "(half-second pause as sentence period...)"
// playlist[3].play --> "Please select a destination from the list on the left."

この投稿の最後に、私が遊んでいるがあまり成功していない単純化されたコードを示します。エラーが発生し続けます。jplayer または別のシステムの使用を提案する前に、これらは、停止する機能を備えた曲の再生を対象としているように思えます。本格的な jplayer またはその他のスタイルのインターフェイスは必要ありません。ボタンを押すだけで、オーディオ マップ システムをガイドできるようになります。コンソールに次のエラーが表示され続けます。

Uncaught TypeError: Object #selectionFrom has no method 'play' audio-map.js:142
(anonymous function) audio-map.js:142
jQuery.event.dispatch jquery-1.9.1.js:3074
jQuery.event.add.elemData.handle jquery-1.9.1.js:2750

配列を要素IDと単なる変数の両方として試しました。

var playList= ["#selectionFrom","#playReptileHouse","#play500msPause","#selectDestination"];
var playList= ["selectionFrom","playReptileHouse","play500msPause","selectDestination"];

何かお役に立てば幸いです。簡略化されたスクリプトは次のとおりです。

$(document).ready(function() {

    var playZooEntrance = document.createElement('audio');
    playZooEntrance.setAttribute('src', 'assets/audio/playZooEntrance.mp3');
    playZooEntrance.setAttribute('id', 'playZooEntrance');
    document.body.appendChild(playZooEntrance);

    var playReptileHouse = document.createElement('audio');
    playReptileHouse.setAttribute('src', 'assets/audio/playReptileHouse.mp3');
    playReptileHouse.setAttribute('id', 'playReptileHouse');
    document.body.appendChild(playReptileHouse);

    var selectionFrom = document.createElement('audio');
    selectionFrom.setAttribute('src', 'assets/audio/selectionFrom.mp3');
    selectionFrom.setAttribute('id', 'selectionFrom');
    document.body.appendChild(selectionFrom);

    var selectDestination = document.createElement('audio');
    selectDestination.setAttribute('src', 'assets/audio/selectDestination.mp3');
    selectDestination.setAttribute('id', 'selectDestination');
    document.body.appendChild(selectDestination);

    var play500msPause = document.createElement('audio');
    play500msPause.setAttribute('src', 'assets/audio/play500msPause.mp3');
    play500msPause.setAttribute('id', 'play500msPause');
    document.body.appendChild(play500msPause);

    $('#selected_from').click(function() {  // On the press of a button...
        var playList= ["selectionFrom","playReptileHouse","play500msPause","selectDestination"];
        var i;
        for (i = 0; i < playList.length; ++i) {
            console.log(playList[i]);
            playList[i].play();
            playList[i].setAttribute('ended',function(){/* next i??? */});
        }
    });
    // Play this consecutively...
    // playList[0].play --> "You're coming from the"
    // playList[1].play --> "Reptile House"
    // playList[2].play --> "(half-second pause)"
    // playlist[3].play --> "Please select a destination from the list on the left."
});
4

1 に答える 1

1

型を間違えたようです: その ID を持つ要素を取得しようとしているときに、文字列 ('SelectionFrom') を再生するように要求しています。
そのため、要素を作成するときに要素を配列またはオブジェクトに事前に格納するか、jquery ( $('#'+playList[i]) を使用して ID で要素を見つけることができます。

于 2013-11-30T17:00:14.990 に答える