...
let blurFilter = new createjs.BlurFilter(blurX, blurY, blurQuality);
bitmap.filters = [blurFilter];
bitmap.cache(0, -blurY, this.width, this.height + blurY);
...
bitmap.clone()不会使用过滤器克隆缓存的位图。它只克隆原始文件图像。
我不想两次应用过滤器,因为它需要大量的时间和资源
由于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),此方法将不起作用。
希望有所帮助。