【发布时间】:2012-12-03 23:08:13
【问题描述】:
我正在尝试在这个由 Phrogz 回答的出色脚本 here 之上构建。
问题是动画在所有图像都缓存在浏览器中之前不会播放。因此,在第一次加载时它不会播放。仅在重新加载时。
我尝试这样做的目的是尝试提供一种替代解决方案来让动画自动播放,因为该功能在 iOS 浏览器中不起作用。
这是我正在使用的代码:
function draw() {
var imgNumber = 1;
var lastImgNumber = 121;
var ctx = canvas.getContext('2d');
var img = new Image;
img.onload = function(){
ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height );
ctx.drawImage( img, 0, 0 );
};
var timer = setInterval( function(){
if (imgNumber>lastImgNumber){
clearInterval( timer );
}
else{
img.src = "jpg_80/t5_"+( imgNumber++ )+".jpg";
}
}, 1000/24 ); //Draw at 24 frames per second
}
我尝试在结束正文标记之前添加这个:
window.onload = draw;
但是,我认为必须在 draw() 函数中更改代码。在 setInterval 函数的某个地方?
【问题讨论】:
-
要先加载全部121张图片,再启动动画吗?
-
当你有一个 121 jpeg 帧的动画时,你应该使用
<video>来代替。 -
@Philipp 是的,但是,关键是这个动画可以在 iOS 中自动播放。否则,我只会使用
-
@pimvdb 是的,预加载图像,然后开始动画。如果您在此链接上进行 iPhone 或 iPad 测试以查看我的问题。第一次请求时不加载:html5canvas.syntheticmedia.net
标签: ios caching animation html5-canvas autoplay