我的项目使用Loader类加载SWF文件,然后从这些子文件加载Sprite对象。每个精灵都有一个特定的绿色,我想用一种颜色的所有像素替换透明颜色。
我可以将这些Sprite重新编译为BitmapData类的对象,以简化操作,但我正在寻找避免逐像素操作对象的任何方法。我猜测我可以使用某种位图过滤器,但我对ActionScript了解不够熟悉。
答案 0 :(得分:3)
使用该精灵的threshold
尝试bitmapData
。
var bmd:BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x0);
bmd.draw(sprite);
bmd.threshold(bmd, bmd.rect, new Point(), "==", 0xff00ff00); // 0xff00ff00 = GREEN
您可以更改绿色,也可以自由设置更多的颜色范围进行透明化,例如,某种检测光滑的角落,如下所示:
只需要使用threshold
的操作参数,我使用“==”,但其他许多可用。