【发布时间】:2013-12-03 14:35:23
【问题描述】:
)
我有一个小型网络应用程序,它使用 jquery 和 jcanvas (http://calebevans.me/projects/jcanvas/) 在画布上打印一些形状。
它基本上是一张地图。用户可以放大并拖动它,无论何时他都必须重新绘制所有内容。
正如您在下面的代码中看到的那样,我经常删除和重新创建图层(每当用户拖动地图、缩放或调整其窗口大小时)。我需要图层来处理悬停和点击事件。我的问题是,与其他解决方案相比,这种处理事件的方式是否会对性能产生很大影响。如果是这种情况,我该如何优化我的性能?
var posX = 0, posY = 0;
var zoom = 100;
var points = []; //array of up to 1000 points retrieved by ajax
function draw(){
$("canvas").removeLayers();
$("canvas").clearCanvas();
var xp, yp, ra;
var name;
$.each(points, function(index) {
xp = (this["x"]-posX)/zoom;
yp = (this["y"]-posY)/zoom;
ra = 1000/zoom;
$("#map").drawArc({
layer:true,
fillStyle: "black",
x: xp,
y: yp,
radius: ra,
mouseover: function(layer) {
$(this).animateLayer(layer, {
fillStyle: "#c33",
scale: 1.0
},200);
},
mouseout: function(layer) {
$(this).animateLayer(layer, {
fillStyle: "black",
scale: 1.0
},200);
},
mouseup: function(layer){
context(index,layer.x,layer.y);
}
});
});
}
感谢您的宝贵时间:-)
【问题讨论】:
标签: javascript jquery html5-canvas jcanvas