首页 新闻 会员 周边

html5 canvas问题

0
悬赏园豆:100 [已解决问题] 解决于 2014-03-05 16:05

我有个需求, 在一张大图片(比如2000*1000)上面  贴n(n大于100)张小图,并且支持小图的行走动画,以前是用div来做的,现在准备改用html5,想知道canvas能实现这种功能么,并且canvas有动画的时候是否是 实时刷新重绘啊,那样性能行不行呢?有没有老大提点下

钱耀祖的主页 钱耀祖 | 初学一级 | 园豆:44
提问于:2014-02-13 09:13
< >
分享
最佳答案
0

你DIV做都行,canvas当然没问题,只要注意分层,比如重绘少的大图独立一层避免每次重绘,这个你应该早就懂了。关于html动画与canvas的效率,我曾经做了个小测试可以初观:http://jo2.org/html5-canvas-tutorial-19-canvas-animation-efficiency/

收获园豆:100
十年灯 | 菜鸟二级 |园豆:356 | 2014-02-13 14:29
其他回答(2)
0

迅捷网络[来送福利] | 园豆:574 (小虾三级) | 2014-02-13 13:17
0

用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);

}

具体效果请查看本博客

http://www.cnblogs.com/poxiao/p/3548796.html

破曉 | 园豆:204 (菜鸟二级) | 2014-02-14 09:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册