【问题标题】:Kinetic shape not immediately deleting on iPad在 iPad 上不会立即删除动力学形状
【发布时间】:2014-08-28 06:13:39
【问题描述】:

我有一个 Kinetic 节点,其形状/图像继承了原型函数的删除功能。除其他外,该函数使用 KineticJS destroy() 函数。

当我在浏览器上删除节点时,删除工作正常。当我尝试在我正在使用的 iPad 上的同一浏览器上删除节点时,形状/图像不会从图层中删除,直到我点击画布上的其他位置。

代码如下所示:

Node.prototype.delete = function(){
    ...
    this.visual.destroy();
    layer.draw();
}

其中 this.visual 是动态圆或动态图像。

有什么想法吗?

【问题讨论】:

  • 你能创造出任何小提琴吗?
  • @lavrton 进一步调查表明我的问题与我正在使用的层有关。不幸的是,代码很长,不值得浓缩成一个 jsfiddle,但还是谢谢!

标签: javascript ipad kineticjs


【解决方案1】:

我发现 destroy() 函数非常慢。有时使用我的代码,销毁函数最多需要 10 秒才能真正销毁节点。如果您不关心从层/阶段中删除节点,可以试试这个:

this.visual.setAttr('visible', 'false');

this.visual.setAttr('opacity', 0);

这有点 hacky,但它有望提高 ipad 的性能。

【讨论】:

  • 感谢您的回复!在这种情况下,我确实需要实际删除节点,但我没有遇到过 destroy() 函数花费的时间与您所指出的一样多的问题。
  • 我很好的例子在这里托管:kineticjs-2048.appspot.com。在这里,如果您在玩游戏后选择“重新开始”按钮,它将刷新浏览器。我这样做是因为我试图调用 stage.destroy() 或类似的东西,或 tileLayer.destory。无论如何,电话一直持续!随意分叉它并尝试用破坏替换浏览器刷新。你会对结果感到惊讶。需要注意的是,为了让它需要一段时间才能摧毁,你需要玩一点游戏。
  • 另外,看看图层的 .clear() 函数?也许您可以将该节点放在它自己的图层中,然后清除画布。我不知道你的逻辑是如何工作的,所以这可能不相关,但值得一试
  • 感谢您的建议!
  • 原来在图层重绘调用之前的几行代码行有问题,因此删除该行修复了它!
猜你喜欢
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 2013-11-20
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多