createjs 在面具中组合 2 个形状

createjs combine 2 shapes in a mask

我有一个具有两种形状的符号 S1(比如说 sh0 和 sh1)。在舞台上,我有另一个符号 mc 的实例。在 运行 时,我将创建一个符号 S1 的实例 mc1。使用createjs,如何使用mc1作为mc的掩码?

我假设当您说“符号”时,您指的是 Adob​​e Animate 中的图形或 MovieClip。不幸的是,您只能使用 CreateJS“Shape”as a mask directly。有几个选项:

  1. 自己把形状组合成一个。

  2. 合并指令。这有点脏,但理论上你可以将图形指令从一种形状连接到另一种形状。我怀疑如果 Shape 实例有不同的 x/y 位置,这会有问题。

symbol.shape1.graphics._instructions.concat(symbol.shape2.graphics._instructions);
  1. 缓存符号,将其用作 AlphaMaskFilter 的掩码。文档中的示例应该可以满足您的需求。
 var box = yourSymbol;
 box.cache(0, 0, 100, 100);

 var bmp = new createjs.Bitmap("path/to/image.jpg");
 bmp.filters = [
     new createjs.AlphaMaskFilter(box.cacheCanvas)
 ];
 bmp.cache(0, 0, 100, 100);

第三个可能是您的最佳选择,但它有局限性,并且由于使用过滤器可能会占用大量性能(尤其是当内容发生变化并且您必须不断更新时)。

随时 post 关于您正在使用的内容的更多详细信息,以获得更好的推荐。

干杯。