0
我是Kintetic.js的新手,我試圖做網格。寬度是800px,高度是400px。我想要正方形(20x20)來覆蓋那個區域。每個廣場都有1px的邊框。因此,像這樣:Kinetic.js - 創建網格
var box = new Kinetic.Rect({
width: 20,
height: 20,
fill: 'transparent',
stroke: 'rgba(0, 0, 0, 0.02)'
});
,並填補畫布,我有一個糟糕的循環是這樣的:
for (var i = 0; i <= this.field.getWidth(); i = i + 20) {
for (var i2 = 0; i2 <= this.field.getHeight(); i2 = i2 + 20) {
var cbox = box.clone({x: i, y: i2});
this.grid.add(cbox);
}
}
this.grid是Kinetic.Layer。這個代碼的第一個問題是,它非常慢,在網格出現之前我得到了500毫秒的延遲。但最糟糕的是,如果我在cbox上放置了一個mouseover和mouseout事件來改變填充顏色,那麼渲染真的很慢。我是這樣做的:
cbox.on('mouseover', function() {
this.setFill('black');
self.grid.draw();
});
cbox.on('mouseout', function() {
this.setFill('transparent');
self.grid.draw();
});
所以我的問題是我該如何改進代碼和性能呢?
這聽起來非常有前途的,我一定會努力的! +1 – tbleckert 2012-08-04 22:38:13
這種工作方式,但我給你正確的答案,因爲你把我帶到了它。請記住,e.x/e.y只有在畫布位於0/0時纔可用。 e.layerX/e.layerY效果更好。 – tbleckert 2012-08-05 08:35:16