从 Sprite ActionScript 中移除颜色
Removing Color from Sprite ActionScript
我的项目使用加载器 class 加载 SWF 文件,然后从这些子文件加载 Sprite 对象。每个精灵都有特定的绿色,我想将一种颜色的所有像素替换为透明像素。
我可以将这些 Sprites 重新编译为 BitmapData 的对象 class,以简化操作,但我正在寻找避免逐像素操作对象的任何方法。我猜我可以使用某种位图过滤器,但我对 ActionScript 不够熟悉,无法了解具体细节。
尝试 threshold
与 bitmapData
的 Sprite。
之前 之后 √
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
的操作参数,我使用了“==”,但还有很多其他可用的。
参考文献:
我的项目使用加载器 class 加载 SWF 文件,然后从这些子文件加载 Sprite 对象。每个精灵都有特定的绿色,我想将一种颜色的所有像素替换为透明像素。
我可以将这些 Sprites 重新编译为 BitmapData 的对象 class,以简化操作,但我正在寻找避免逐像素操作对象的任何方法。我猜我可以使用某种位图过滤器,但我对 ActionScript 不够熟悉,无法了解具体细节。
尝试 threshold
与 bitmapData
的 Sprite。
之前 之后 √
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
的操作参数,我使用了“==”,但还有很多其他可用的。