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