Я новичок в Kintetic.js и пытаюсь создать сетку. Ширина 800 пикселей, высота 400 пикселей. И я хочу, чтобы квадраты (20x20) покрывали эту область. Каждый квадрат имеет границу в 1 пиксель. Так что-то вроде этого:
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 - это кинетический слой. Первая проблема с этим кодом заключается в том, что он очень медленный, и я получаю задержку примерно в 500 мс перед появлением сетки. Но хуже всего то, что если я помещаю событие mouseover и mouseout в cbox, чтобы изменить цвет заливки, это отрисовывается очень медленно. Вот как я это делаю:
cbox.on('mouseover', function () {
this.setFill('black');
self.grid.draw();
});
cbox.on('mouseout', function () {
this.setFill('transparent');
self.grid.draw();
});
Итак, мой вопрос: как я могу улучшить код и производительность этого?