为了能够使用context.globalCompositeOperation,我尝试了几次,并在KineticJS中将其设置为destination-out。
我做了一个继承自Kinetic.Rectangle的Kinetic.CustomShape (我的表面让它一点一点消失)。然后我在我的初始化方法中使用了this.sceneFunc()来使用一个自定义方法。这个想法是,根据用户输入,我将绘制一个将从基本矩形中删除的路径。
与在上一个KineticJS库中一样,赋予场景函数的上下文不是常规上下文,我使用context._context来访问本地对象,并使用它来设置我所谓的“删除”路径
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...
}
}
}
},在我的桌面浏览器和大多数模拟器上,一切都运行得很好,但是...我在一些安卓设备(比如三星Galaxy Note )和一些manymo模拟器(https://www.manymo.com/emulators/83/connect)上遇到了问题。问题是,在这些设备上,我的删除路径永远不会绘制,除非我删除了行context._context.globalCompositeOperation = "destination-out";,或者如果只是将destination-out值更改为其他值,如xor (这会产生有趣的结果,但不是我想要的……)
有什么建议吗?
发布于 2015-07-31 20:57:17
我知道现在已经很晚了,但这可能会对其他人有所帮助。
下一个解决方案对我来说是有效的:
canvas.style.opacity = 0.99;
window.setTimeout(function() {
canvas.style.opacity = 1;
}, 0);https://stackoverflow.com/questions/25490663
复制相似问题