将“已结束”事件绑定到没有ID或类的声音播放

时间:2013-09-11 10:14:40

标签: javascript jquery function html5-audio tidesdk

我目前有一个在TideSDk(一个应用程序包装程序)中播放声音的功能设置,如下所示:(注意:Ti.Media是来自TideSDk的API)

function playSound(soundFilePath){
        var s = Ti.Media.createSound(soundFilePath);
        s.play();
        }

然后我这样调用这个函数:(再次不用担心Ti.Filesystem,更多的API)

$("#audioMain").click(function() {
         var sound = 'Level1/my_body_here_i_am/audio/f_sentence1.mp3';
         playSound(Ti.Filesystem.getFile(Ti.Filesystem.getResourcesDirectory(), sound).nativePath())            
            });

我的问题是我需要以某种方式将'已结束'事件绑定到播放的声音,它通常会像以下一样简单:

$('#someID').bind('ended', function() {
    //do something
    });

但由于我不能在这里使用ID或类,我不知道要绑定什么。我试过了:

sound.addEventListener("ended", function() { }); or
s.addEventListener("ended", function() { });

但似乎无法使这些工作起作用,我不确定我是否必须在原始函数中包含此绑定事件..它已经让我好几个小时了。

感谢社区。

1 个答案:

答案 0 :(得分:1)

快速浏览TideSDK文档后,似乎可以做到这样的事情:

function playSound(soundFilePath){
        var s = Ti.Media.createSound(soundFilePath);
        s.play();
        s.onComplete(function(){
           alert("sound finished");
        });
}

在这里查看所有细节 - http://tidesdk.multipart.net/docs/user-dev/generated/#!/api/Ti.Media.Sound

看起来调用Ti.Media.createSound();会返回Ti.Media.Sound对象,该对象具有方法.play()以及我提供的链接中列出的其他对象。希望这有帮助