如何克隆在缓存上有缓冲区的easeljs位图。

时间:2018-03-29 07:38:25

标签: javascript createjs easeljs

...

let blurFilter = new createjs.BlurFilter(blurX, blurY, blurQuality);
bitmap.filters = [blurFilter];
bitmap.cache(0, -blurY, this.width, this.height + blurY);

...

  

bitmap.clone()不会使用过滤器克隆缓存的位图。它只克隆原始文件图像。

     

我不想两次应用过滤器,因为它需要大量的时间和资源

1 个答案:

答案 0 :(得分:2)

由于DisplayObjects不克隆它们的缓存(这可能会产生一些意想不到的结果),你可以自己简单地分配缓存:

var bmp2 = bmp1.clone();
bmp2.cacheCanvas = bmp1.cacheCanvas;
bmp2.bitmapCache = bmp2.bitmapCache; // Also required for version 1.0+

请注意,如果您使用updateCache()更新了任一位图,则会更新这两个实例。

我经常使用的一种方法是简单地使cacheCanvas成为新Bitmaps的源代码。如果您使用比例因子,则必须适应它。

var bmp2 = new createjs.Bitmap(bmp2.cacheCanvas);

如果您使用WebGL缓存(通过StageGL),此方法将

希望有所帮助。