V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
loading
V2EX  ›  问与答

如何用js控制audio元素连续播放mp3文件

  •  
  •   loading · 2013-10-12 15:57:33 +08:00 via iPhone · 7776 次点击
    这是一个创建于 4087 天前的主题,其中的信息可能已经有所发展或是发生改变。
    web app需要播放如“叮咚-t123-进站”
    共三个文件,求解。

    另:ajax一直取数据,如何判断某条数据变化后播放呢,如t123的状态从“进站”变为“晚点”

    如何处理优雅而高效
    6 条回复    1970-01-01 08:00:00 +08:00
    Perry
        1
    Perry  
       2013-10-12 16:48:51 +08:00   ❤️ 1
    没有很理解你的意思。
    ajax取得的数据辨别进站和晚点后各自播放不一样的mp3文件:“叮咚-t123-进站”,“叮咚-t123-晚点”
    叮咚是每次都需要的?然后可以把“t123”的mp3文件的名字统一成列车的代号方便直接variable带入链接,进站和晚点就是一个判断了。
    loading
        2
    loading  
    OP
       2013-10-12 17:32:26 +08:00 via iPhone
    @Perry 页面一直轮训,json实际是个字典

    t123:晚点

    如果内容变为(即与上一次取得的json数据相比)

    t123:进站

    就播报对应音频。



    对于监视变化然后给出视觉提醒我已经写出“能跑”的代码了,当前是声音不好处理,因为放一次就有3个文件,分别是:叮咚;t123;进站。

    不知这个使用audio元素的js函数怎么写,函数应该是:

    function(车次,状态){
    blabla

    pandada8
        3
    pandada8  
       2013-10-12 17:46:04 +08:00
    要不在audio元素的播放完成事件里面再打开下一个文件?
    yimity
        4
    yimity  
       2013-10-12 17:48:39 +08:00
    替换下 audio 的 src 就好了么。
    icevil
        5
    icevil  
       2013-10-12 17:49:35 +08:00   ❤️ 1
    @loading

    function(车次,状态) {

    var tipSound = new Audio();
    tipSound = new Audio("叮咚.mp3");
    $(tipSound).bind("ended", function() {
    tipSound = new Audio(车次.mp3);
    tipSound.play();
    $(tipSound).bind("ended", function() {
    tipSound = new Audio(状态.mp3);
    tipSound.play();
    });
    });
    tipSound.play();

    }

    github 打开慢,懒得贴 gist 了,未测试,不知道可行否。。
    loading
        6
    loading  
    OP
       2013-10-12 17:58:28 +08:00 via iPhone
    突然发现如果能以队列方式播放就完美了,只要push进去,就依次放出来。
    @icevil 感谢,应该可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2706 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.