我是 Kintetic.js 的新手,我正在尝试做一个网格。宽度为 800 像素,高度为 400 像素。我希望正方形(20x20)覆盖该区域。每个方块都有一个 1px 的边框。所以是这样的:
var box = new Kinetic.Rect({
width: 20,
height: 20,
fill: 'transparent',
stroke: 'rgba(0, 0, 0, 0.02)'
});
为了填充画布,我有一个像这样的糟糕 for 循环:
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();
});
所以我的问题是如何改进代码和性能?