javascript - 播放带有播放和暂停动画的相应图像序列的音频

标签 javascript jquery ajax html

我正在尝试使用 HTML5 和 javascript(可能是 ajax 或 jquery)创建带有背景音频的一系列图像的动画。我基本上是在尝试制作几个人之间的简单对话(由图像描绘)和通过(音频)语音的动画。

我有一个音频文件(mp3/ogg)和一系列图像。当我播放音频时,图像的顺序将相应地显示。

这里有一个问题,如果我暂停或重播音频,图像序列也必须停止或从头开始重播。

因此图像序列必须与音频播放同步。

有什么想法或概念吗?现在我有一个可以播放/暂停的jPlayer。也可以用jPlayer完成吗?

最佳答案

只需根据音频的currentTime 做出决定即可。 Example

var audio = document.querySelector('audio'),
    img = document.querySelector('img'),
    imgs = ['http://raptorsrepublic.com/wp-content/uploads/2012/08/meh_cat.jpg', 'http://2.bp.blogspot.com/_8tZf9lm-smo/R7hn7pNx-jI/AAAAAAAAALI/86DN7VedT_Q/s400/meh.jpg', 'http://2.bp.blogspot.com/-yWsoWNVX4jU/UAy5uJxD52I/AAAAAAAANSc/OTje6k_C5Q8/s1600/meh2.jpg'],
    duration, interval, currentImg;

(function callee(ready) {

    if (ready !== false) ready = true;

    if (!ready) {
        return audio.addEventListener('canplaythrough', callee);
    }

    if (!audio.playing) audio.play();

    if (!duration) {
        duration = audio.duration;
        interval = duration / imgs.length;
    }

    if (isNaN(duration)) return setTimeout(callee, 1000); 

    var currentTime = audio.currentTime;

    if (!currentImg) {
        img.src = currentImg = imgs[0];
    }

    var currentTimeImage = imgs[Math.floor(currentTime / interval)];

    if (currentTimeImage != currentImg) {
        img.src = currentImg = currentTimeImage;
    }

    setTimeout(callee, 1000);

})(false);

关于javascript - 播放带有播放和暂停动画的相应图像序列的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12706288/

相关文章:

javascript - 奇怪的Put Json表单数据(Jquery Ajax)

javascript - 从 onclick 按钮传递值但在 jquery 中收到错误

jquery - 如何修复表格中相同的图像尺寸(没有被压迫的图像)?

javascript - 使用 foreach 通过 Ajax 和动态表单进行发布

javascript - 为什么 View 不显示在 Angular JS 上?

javascript - jQuery 和所有 .js 文件不能在本地工作,只能在外部工作

javascript 获取日期选择器属性的开始或结束值

javascript - 即使在删除了 JavaScript 事件处理程序所绑定(bind)的 DOM 元素后,内存中是否仍存在该事件处理程序?

javascript - XHR抛出超时错误并且不执行onTimeout事件

php ajax 发布请求