KineticJS globalCompositeOperation和android支持

时间:2014-08-25 16:51:18

标签: android canvas kineticjs

我尝试过多次尝试使用context.globalCompositeOperation并将其设置为KineticJS中的destination-out

我做了Kinetic.CustomShape继承自Kinetic.Rectangle(我的表面让我一点一点地消失)。然后我在我的init方法中使用this.sceneFunc()来使用自定义方法。我的想法是,根据用户输入,我将绘制一条将从基本矩形中删除的路径。

与上一个KineticJS lib中一样,给予场景函数的上下文不是常规上下文我使用context._context来访问本机对象并使用它来设置我的调用"删除&#34 ;路径

customDrawingMethod: function (context) {
  Kinetic.Rect.prototype._sceneFunc.call(this, context);
  if ( I need to remove pieces of my rectangle) {
    var path, point, i, j;
    for each point in my path {
      point = first point;
      if (point !== undefined) {
        context.beginPath();
        context._context.globalCompositeOperation = "destination-out";
        context._context.strokeStyle= "#FC0";
        context._context.lineWidth = 25;
        context._context.lineCap = "round";
        context._context.lineJoin = "round";
        ... the actual drawing goes there...
      }
    }
  }
},

我的桌面浏览器和大多数模拟器上的一切都运行良好,但是...我在某些Android设备(例如Samsung Galaxy Note)和某些模拟器(https://www.manymo.com/emulators/83/connect)上存在问题。问题是,在这些设备上,我的删除路径永远不会被删除,除非我删除行context._context.globalCompositeOperation = "destination-out";或者只是将destination-out值更改为xor之类的其他内容(这会产生有趣的结果,但不是我要找的......)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我知道它已经很晚了,但对其他人来说可能会有所帮助 下一个解决方案正在为我工​​作:

canvas.style.opacity = 0.99;
window.setTimeout(function() {
    canvas.style.opacity = 1;
}, 0);