我创建了一个带有可滚动背景的Kineticjs场景。在此背景之上是一个带有事件监听器的rect。我的问题是,在移动背景并绘制场景后,什么可能导致此事件监听器不会触发。我不知道它是什么,我甚至在所有事情上都叫.moveToTop()
,看看我是否可以将形状移回到顶部,即使我很确定它仍然存在。那么什么可能导致事件监听器在平局后停止触发?
有人知道解决这个问题吗?我想我可能能够将另一个事件监听器附加到形状上,但如果我做了一些根本错误的事情,这似乎是不必要的。
提前致谢!
编辑:这是一些代码。
// Here is the event listener attached to scroll bar
hscroll4.on('dragmove', updateBackgroundPos4);
// Here is code to move background
var updateBackgroundPos4 = function() {
var hscrollPos = hscroll4.getX();
console.log("mb4: ", mainBody4Dynamic.getX());
mainDynamicWrapper.setX(-hscrollPos+120); //the BG I am moving on scroll
// my attempt at getting it to work
dynamicLayer4.moveToTop();
mainBody4.moveToTop();
mainDynamicWrapper.moveToTop();
newFolder.moveToTop();
dynamicLayer4.draw();
//stage4.drawHit();
};
// Here is the group which contains the rectangle
folderGroup.on('mouseover', function() { //---- this isn't firing after draw
document.body.style.cursor = 'pointer';
console.log("change text");
updateTestText();
});
folderGroup.on('mouseout', function() {
document.body.style.cursor = 'default';
});
编辑2:即使我的建议也行不通。重新添加事件侦听器不会使其再次可单击:(
答案 0 :(得分:0)
好吧,我明白了!我找到了一个帖子,据说在滚动条上创建了一个dragend事件,然后调用layer.moveToTop()
和layer.draw()
。所以把它放在dragmove中并不足以让程序注册点击事件。这背后的原因是:
"当您使用拖动事件时,KineticJS会在顶部创建一个临时图层,因此您的事件将在拖拽之后未注册。"
如果有人感兴趣,这是主题: