setFill
只是告诉多边形对象在应该绘制自己时应该用什么填充自己。这可以是图像或颜色。
要设置绘制多边形的不透明度,您拥有该opacity
属性。您可以通过将超时与增加多边形不透明度并重绘它的函数相结合来实现您想要实现的目标。
var fadeIn = function(shape) {
var o = shape.getOpacity();
o = o + 0.1 >=1 ? 1 : o + 0.1;
shape.setOpacity(o);
shape.getLayer().draw();
if(o !== 1) {
setTimeout(function() {
fadeIn(shape);
}, 120);
}
};
例子。
编辑:
目前在 KinectJS 中似乎没有办法设置填充的不透明度。不过,我一直在尝试查看是否可以找到解决方法。
正如您所提到的,一种方法是绘制另一个仅具有笔划的多边形,并在具有填充的多边形上空填充,并在淡入完成后删除笔划多边形。
例子。
另一种方法是更改drawFunc
特定多边形的 。
每当调用特定层的draw
函数时drawScene
,drawHit
都会为其所有子层调用函数。drawScene
和调用对象的drawHit
函数。在调用之前根据形状的不透明度设置.Kinetic.Shape
drawFunc
drawScene
globalAlpha
drawFunc
设置的方式drawFunc
是Kinetic.Polygon
首先在多边形的边的上下文上形成一条路径。然后它被填充,然后是描边。填充的方式就是简单的fillStyle
根据多边形的填充设置上下文的,然后context.fill
调用。
图像的填充样式是如何设置的?当setFill
为多边形调用并且作为参数传递的对象具有属性image
时,fillType
被认为是'PATTERN'
。当drawFunc
要填充路径时,使用图像创建图案context.createPattern
并将其设置为填充样式。从不考虑不透明度。
但是,我们可以通过改变它来让一个特定的多边形考虑填充的不drawFunc
透明度setDrawFunc
。我只是drawFunc
从 KinectJS 源中复制了setFill
.
例子。
请注意,尽管如此,这会mouseover
因某种原因中断事件。最好坚持方法一,直到我或其他人,就此而言,弄清楚是什么导致更改mouseover
时不起作用。drawFunc
编辑 2:
我设法弄清楚了!
多边形的drawHitFunc
与其 相同drawFunc
。因此,当我们更改 时drawFunc
,我们最终会更改 ,drawHitFunc
这会在需要命中检测时产生问题——就像mouseover
事件一样。
因此,当我们更改drawFunc
多边形的 时,如果我们也更改drawHitFunc
withsetDrawHitFunc
以使其与原始 drawFunc
相同,我们可以避免破坏命中检测。
例子。