KineticJS - 裁剪填充图像

时间:2012-11-21 06:58:09

标签: image crop fill kineticjs

我正在尝试在游戏中使用tileset。我想裁剪填充图像但不能,因为

  1. 我无法使用Kinetic.Image()对象填充形状。

  2. 我无法裁剪Image()对象。

    var rect = new Kinetic.Rect({  
        x: 0,  
        y: 0,  
        width: 64,  
        height: 64,  
        fill:{  
            image: imageObj,  
            crop:{  
                x: 128,  
                y: 128,  
                width: 64,  
                height: 64  
            },   
        },  
            strokeWidth: 1  
    });
    
  3. 这不起作用,我也无法用预先剪切的Kinetic.Image()对象替换image:imageObj。有什么想法吗?

    编辑:看起来可以通过将Kinetic.Image绘制到场景中,使用toDataUrl将裁剪的Kinetic.Image加载到可用填充的图像对象中,然后继续使用地图脚本。这引入了大量的性能问题/加载时间,因此我将继续并假设我想做的事情是不可行的。如果有人对如何做到这一点有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以获得填充以接受图像,如本例中的Vader / Yoda所示:

http://www.html5canvastutorials.com/kineticjs/html5-canvas-set-fill-with-kineticjs/

我建议将图像加载到数组中(就像他在示例中所做的那样),然后在创建图块时调出图像。

我将第一个五角大楼的代码更改为该示例中的矩形,如下所示:

var colorPentagon = new Kinetic.Rect({
      x: 40,
      y: 50,
      width: 100,
      height: 100,
      fill: {
        image: images.darthVader,
        offset: [-220, -70]
      },
      stroke: "black",
      strokeWidth: 4,
      draggable: true
    });

它有效,所以没有理由不能给你你想要的东西。