【问题标题】:Canvas KineticJS - error when I release mouse above shapeCanvas KineticJS - 当我在形状上方释放鼠标时出错
【发布时间】:2013-10-02 20:51:55
【问题描述】:

我在通过单击和拖动创建矩形时遇到了 Kineticjs 的一些问题。

$('#my-canvas').mousedown(function() {

    // Create rectangle
    // Add rectangle to layer
    // Draw layer
});

// Dragging
$('#my-canvas').mousemove(function() {
    // Update rectangles size/position so that it matches the current mouse position
    // Draw layer
});

然后当我释放(mouseup)时,我得到以下错误:

Uncaught TypeError: Cannot read property '_id' of undefined
Kinetic.Util.addMethods._mouseup
(anonymous function)

如果我在释放鼠标时确保鼠标不在矩形上,我不会收到错误消息。但是由于我使用鼠标拖出矩形,所以鼠标位置将位于矩形结束位置。

我找了又找,没有结果。

提前致谢。

更新

这是一个显示我的意思的小提琴: http://jsfiddle.net/DfsFL/1/

Chrome 给出了我在上面几段中发布的错误,FireFox 给出了“TypeError: this.clickStartShape is undefined”。重要提示:如果您在我创建矩形的位置删除“stroke”和“strokeWidth”,它就可以正常工作。这是一个错误,还是我做错了什么?

【问题讨论】:

  • 以上没有错误,所以我们需要更多代码来帮助;)
  • 您在 mousedown 和 mousemove 函数中所做的操作似乎有错误,我们看不到该代码 atm :D...
  • @markE 抱歉回复晚了。请查看我更新的问题(在底部),我在其中提供了我的问题的 jsfiddle 演示。如果我需要澄清一些事情,请告诉我。

标签: javascript jquery canvas kineticjs


【解决方案1】:

我刚刚偶然发现了一个类似的问题:

这应该在 Kinetic 5 中修复;在这里,相应的方法包括对(以前的undefinedclickStartShape 的显式检查。

...

if(Kinetic.listenClickTap && clickStartShape && clickStartShape._id === shape._id) {
    shape._fireAndBubble(CLICK, evt);

    if(fireDblClick) {
        shape._fireAndBubble(DBL_CLICK, evt);
    }
}

...

(从非最小化 Kinetic 5.0.1 中的第 9040 行开始)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 2012-03-05
    • 2012-07-06
    • 1970-01-01
    • 2012-12-29
    • 2011-10-08
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多