我有个需求, 在一张大图片(比如2000*1000)上面 贴n(n大于100)张小图,并且支持小图的行走动画,以前是用div来做的,现在准备改用html5,想知道canvas能实现这种功能么,并且canvas有动画的时候是否是 实时刷新重绘啊,那样性能行不行呢?有没有老大提点下
你DIV做都行,canvas当然没问题,只要注意分层,比如重绘少的大图独立一层避免每次重绘,这个你应该早就懂了。关于html动画与canvas的效率,我曾经做了个小测试可以初观:http://jo2.org/html5-canvas-tutorial-19-canvas-animation-efficiency/
顶
用canvas能够完全实现 主要代码如下
var canvas=$("#imageCanvas").get(0);
var context=canvas.getContext("2d");
var oldX,oldY,newX,newY;
var enabled=false;
canvas.onmousedown=function(event){
enabled=true;
oldX = event.clientX;//实际运用中要获取鼠标在元素中的相对位置,在此为了方便直接获取了event的clientX
oldY = event.clientY;//实际运用中要获取鼠标在元素中的相对位置,在此为了方便直接获取了event的clientY
};
canvas.onmouseup=function(event) {
enabled = false;
};
canvas.onmousemove=function(event) {
if (!enabled) {
return;
}
newX=event.clientX;//实际运用中要获取鼠标在元素中的相对位置,在此为了方便直接获取了event的clientX
newY=event.clientY;//实际运用中要获取鼠标在元素中的相对位置,在此为了方便直接获取了event的clientY
moveImage();
oldX=newX;
oldY=newY;
};
function moveImage(){
var moveX=(newX - oldX);
var moveY=(newY - oldY);
//图像移动
context.transform(1,0,0,1,moveX,moveY);
context.drawImage(image);
}
具体效果请查看本博客