【发布时间】:2017-08-26 20:01:19
【问题描述】:
我在画布 spritesheet 动画上找到了一个可爱的代码 sn-p。这是ts:
http://jsfiddle.net/m1erickson/h85Gq/
我试图通过编写一个接受 Image 对象的动画函数来美化这段代码,这样我就可以同时为画布中的多个图像制作动画。这是我的尝试:
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var spritePosition=0;
var spriteWidth=100;
var spriteHeight=100;
var spriteCount=40;
var spritePlayCount=0;
var maxSpritePlays=2;
var objectS=new Image();
objectS.src="sprites/first.png";
var fps = 50;
function animate(sprite) {
setTimeout(function() {
if(spritePlayCount<maxSpritePlays){
requestAnimationFrame(animate);
}
// Drawing code goes here
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.drawImage(sprite,spritePosition*spriteWidth, 0,spriteWidth, spriteHeight, 0,0,spriteWidth, spriteHeight);
spritePosition++;
if(spritePosition>spriteCount-1){
spritePosition=0;
spritePlayCount++;
}
}, 1000 / fps);
}
objectS.onload=function(){
animate(objectS);
}
}); // end $(function(){});
我收到了很多观察到的错误,但我似乎无法找到解决方法:
index3.html:59 Uncaught TypeError: 无法执行'drawImage' 'CanvasRenderingContext2D':提供的值不是类型 '(CSSImageValue 或 HTMLImageElement 或 HTMLVideoElement 或 HTMLCanvasElement 或 ImageBitmap 或 OffscreenCanvas)'
你能帮我找出我的错误吗?
【问题讨论】:
标签: javascript html canvas sprite-sheet