KineticJS:没有形状的阴影?

时间:2013-03-12 12:35:43

标签: kineticjs

KinectJS中,如何创建阴影(即边缘模糊的半透明形状)而不绘制“投射”它的形状?

起初我认为可以让形状投下阴影,但将形状本身的不透明度设置为零。像这样:

var rect = new Kinetic.Rect({
    width: 100,
    height: 100,
    opacity: 0,
    shadowEnabled: true,
    shadowBlur: 10,
    shadowOpacity: 0.6
});

但是,这不起作用,因为看起来最终的shadowOpacity会与形状自己的不透明度值相乘。因此,如果形状不透明度== 0,那么最终的shadowOpacity = 0.6 * 0 == 0.这意味着阴影最终也是不可见的。

您对如何达到预期效果有任何想法吗?

4 个答案:

答案 0 :(得分:3)

除非你用模糊的触摸建立自定义形状,否则我认为没有形状的阴影。您可以隐藏视图外的主要形状,如下所示。我不建议将它用于许多形状。

    <div id="container"></div>
    <script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.3.1-beta2.js"></script>
    <script>
      var stage = new Kinetic.Stage({
        container: 'container',
        width: 578,
        height: 200
      });

      var layer = new Kinetic.Layer();

      var rect = new Kinetic.Rect({
        x: -120,
        y: -90,
        width: 100,
        height: 50,
        fill: 'blue',
        stroke: 'black',
        strokeWidth: 1,
        shadowColor: 'black',
        shadowBlur: 10,
        shadowOffset: 150,
        shadowOpacity: 0.5
      });

      layer.add(rect);
      stage.add(layer);

    </script>

答案 1 :(得分:1)

你需要的是模糊滤镜。这将在本月晚些时候(2013年3月)与v4.3.4一起发布。由于w3c规范,阴影不是创建模糊边缘的良好机制。

答案 2 :(得分:0)

我记得通过更改kinteticjs框架来创建带阴影的透明按钮。我改变了特定的形状方法,以允许填充相反的方向。无论何时填充相反的方向,它都会从同一填充中的任何其他形状中移除该形状。

答案 3 :(得分:-1)