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

问题描述 投票:0回答:1

...

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

...

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

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

javascript createjs easeljs
1个回答
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),此方法将不起作用。

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.