Kineticjs:抽奖后缺少事件监听器

时间:2014-06-20 16:57:54

标签: javascript html5 canvas kineticjs

我创建了一个带有可滚动背景的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:即使我的建议也行不通。重新添加事件侦听器不会使其再次可单击:(

1 个答案:

答案 0 :(得分:0)

好吧,我明白了!我找到了一个帖子,据说在滚动条上创建了一个dragend事件,然后调用layer.moveToTop()layer.draw()。所以把它放在dragmove中并不足以让程序注册点击事件。这背后的原因是:

"当您使用拖动事件时,KineticJS会在顶部创建一个临时图层,因此您的事件将在拖拽之后未注册。"

如果有人感兴趣,这是主题:

LINK TO THREAD