0

我有一个动画,完成后会产生静止图像。我希望此图像显示大约 5 秒钟,然后再更改为另一张静止图像。我已经尝试了 setTimeout 的各种实现来解决这个问题,但它对我没有用。

任何帮助,将不胜感激。

这是我的代码:

(function drawFrame() {
  window.requestAnimationFrame(drawFrame, canvas);
  <!--ctx.clearRect(0, 0, cw, ch); -->
  image3 = new Image();
  image3.src = "broken1.png";
  ctx.drawImage(image3, 0, 0);
  setTimeout(function() {
    image4 = new Image();
    image4.src = "broken.png";
    ctx.drawImage(image4, 0, 0);
  }, 5000);
}())
4

1 回答 1

0

Felix Kling 是对的,您应该将绘图包装在 onload 回调中。请看下面的代码。jsFiddle 就在这里

(我删除了 requestAnimationFrame 以使代码更简单,但我认为这不是问题所在。)

$(function () {
    function drawFrame() {
        //window.requestAnimationFrame(drawFrame, canvas);
        var c = document.getElementById("container");
        var ctx = c.getContext("2d");
        //ctx.clearRect(0, 0, cw, ch);
        image3 = new Image();
        image3.onload = function() {
            ctx.drawImage(this, 0, 0);
            //console.log("loaded");
        };
        image3.src = "http://placehold.it/300x300";
        
        setTimeout(function () {
            image4 = new Image();
            
            image4.onload = function() {
                ctx.drawImage(this, 0, 0);
            };
            image4.src = "https://placekitten.com/g/300/300";
        }, 5000);
    }
    
    drawFrame();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="container"></canvas>

于 2014-12-01T16:49:18.713 回答