【发布时间】:2016-08-01 07:19:00
【问题描述】:
【问题讨论】:
-
请向我们提供一些您一直在尝试做的事情的代码。这将帮助我们帮助您!
-
其实我对画布动画一无所知,所以如果有的话,我会搜索相同的。如果可以的话,请帮助我提供临时代码。
标签: javascript html canvas html5-canvas jquery-animate
【问题讨论】:
标签: javascript html canvas html5-canvas jquery-animate
此快速演示在指定数量的动画帧上将 1+ 图像从各自的 [startX, startY] 到各自的 [endX, endY] 制作成动画。
你可以通过监听IE上的mousewheel事件和其他浏览器上的DOMMouseScroll事件来触发它。
快速示例代码和演示:
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
var images=[];
var img=new Image();
img.onload=start;
img.src="https://dl.dropboxusercontent.com/u/139992952/shipSmall.jpg";
function start(){
images.push(defineImageAnimation(img,20,20,200,100,60*2));
requestAnimationFrame(animate);
}
function animate(time){
ctx.clearRect(0,0,cw,ch);
var stillAnimating=false;
for(var i=0;i<images.length;i++){
var img=images[i];
if(img.durationCountdown>0){
img.x+=img.dx;
img.y+=img.dy;
img.durationCountdown--;
stillAnimating=true;
}else{
img.x=img.endX;
img.y=img.endY;
}
ctx.drawImage(img.image,img.x,img.y);
}
if(stillAnimating){
requestAnimationFrame(animate);
}
}
// duration is expressed as how many requestAnimationFrame loops it
// should take the animation to complete. Loops occur about every
// 1/60th of a second
function defineImageAnimation(img,startX,startY,endX,endY,duration){
return({
image:img,
x:startX, y:startY,
endX:endX, endY:endY,
dx:(endX-startX)/duration,
dy:(endY-startY)/duration,
durationCountdown:duration
});
}
body{ background-color:white; }
#canvas{border:1px solid red; }
<canvas id="canvas" width=512 height=512></canvas>
【讨论】: