假设我有以下代码,事件似乎只是一次又一次地触发以下两个例子。
第一个例子,这很有效,事件每次都会按预期触发
for (var i = 0; i < items; i++) {
var rect = new Kinetic.Rect({
x: 0,
y: 1+i,
width: 100,
height: 2,
fill: 'green'
});
rect.on('mouseover', function(evt) {
$('#console').text(evt.shape.index);
});
layer.add(rect);
}
查看行动http://jsfiddle.net/6aTNn/5/
在事件中添加旋转值似乎没有正确触发时,这是我的问题。
for (var i = 0; i < items; i++) {
var rect = new Kinetic.Rect({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
width: 100,
height: 1,
fill: 'green'
});
rect.on('mouseover', function(evt) {
console.log(evt.shape.index);
$('#console').text(evt.shape.index);
});
rect.rotate(i * angularSpeed / items);
// add the shape to the layer
layer.add(rect);
}
查看行动http://jsfiddle.net/6aTNn/8/
任何有关此问题的帮助都会很长时间,并且无法找到有效的解决方案吗?
答案 0 :(得分:1)
节点太“薄”且太重叠,无法正常触发事件。
尝试增加每个节点的高度并添加更少的节点
例如,将i++
替换为i += 3
并将height
增加为2
。
for (var i = 0; i < 800; i += 3) {
var rect = new Kinetic.Rect({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
width: 100,
height: 2,
fill: 'green'
});
// ...
}