javascript - 单击鼠标启动动画 gif,从第一帧开始

标签 javascript gif animated-gif

我在循环动画中从不正确的点开始的 gif 有问题。

我制作了一个动画,其中气泡在屏幕上升起然后淡出。气泡图形在创建时只是一个 png

但是,如果单击它们,我想显示气泡弹出的动画 gif。这是我的动图:

http://digitalshowcase.somethingbigdev.co.uk/assets/portfolio/db-pop-bubble.gif

为了在 gif 加载到 div 时停止出现“跳转”,我正在预加载它:

(new Image()).src = "http://digitalshowcase.somethingbigdev.co.uk/assets/portfolio/db-pop-bubble.gif";

但是我发现当我点击并将新的 gif 放在 div 中时...

 $('body').on('click', '.db-bubble', function() {
        ...
        $(this).html('[![][1]][1]');
        ...
});

...它不是在第一帧开始 gif。我只能假设从加载 gif 的那一刻起,它就开始“播放”,因此当它被插入到 div 中时,它会以某种方式在 gif 的几秒周期内的任何时候加载它。

尝试点击我示例中的许多气泡,您会发现它无法正常工作。它应该从圆形气泡开始,然后变成一个大的“爆炸”图形,然后几个小气泡应该消失。您会注意到它在 gif 中的任何一点开始。

http://codepen.io/anon/pen/EjQgoV

有什么想法吗?

最佳答案

你能试试这个吗?

http://codepen.io/anon/pen/QbQGbe

我为每个弹出的气泡缓存不同的 src:

    setInterval(function makeBubble() {
          (new Image()).src = "http://digitalshowcase.somethingbigdev.co.uk/assets/portfolio/db-pop-bubble.gif?db-bubble-"+bubbleID;
....

稍后在您用来弹出气泡的函数中,您必须设置为该气泡缓存的 src(由其 bubbleID 标识):

$('body').on('click', '.db-bubble', function() {
    var bubbleID = $(this).attr('id');
    src = 'http://digitalshowcase.somethingbigdev.co.uk/assets/portfolio/db-pop-bubble.gif?'+bubbleID;
    var img = new Image();
    img.src=src;
    $(this).html(img);
    setTimeout(function() {
      // murder time
      $("#" + bubbleID).remove();
    }, 1000);
  });

关于javascript - 单击鼠标启动动画 gif,从第一帧开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31163786/

相关文章:

ios - 如何在 iOS 的 swift 中上传 gif 图片

python - 我怎样才能用 python 的枕头使我裁剪的 gif 角透明?

android - 如何在 Android 中创建动态启动画面?

javascript - 使用 D3/JavaScript 在不停止动画的情况下对 SVG 中的动画 GIF 进行排序

javascript - Angular 动态从 ng-repeat 中删除过滤器

javascript - 如何将 datetimepicker js 包装到 AngularJS 指令中

javascript - 显示/隐藏 jquery 插件 - 我之前的 div 保持打开状态

c++ - 将十六进制流转换为 GIF

javascript - 为什么把script标签放在body标签的末尾比较好?

matplotlib - 在 Python 中嵌入 Matplotlib 动画(google colab notebook)