我有一个动画,完成后会产生静止图像。我希望在更改为另一张静止图像之前,此图像显示约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);
}())
答案 0 :(得分:0)
Felix Kling是对的,你应该将你的绘图包装在onload回调中。请看下面的代码。 jsFiddle to it here。
(我已删除了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();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="container"></canvas>
&#13;