我尝试过多次尝试使用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
之类的其他内容(这会产生有趣的结果,但不是我要找的......)
有什么建议吗?
答案 0 :(得分:0)
我知道它已经很晚了,但对其他人来说可能会有所帮助 下一个解决方案正在为我工作:
canvas.style.opacity = 0.99;
window.setTimeout(function() {
canvas.style.opacity = 1;
}, 0);