AS3:复制PNG图像会导致透明度降低

时间:2011-11-10 23:52:41

标签: actionscript-3 actionscript png transparency loader

我正在使用LoaderMax加载外部PNG并在很多地方显示它,所以我使用以下代码复制图像:

var cd:ContentDisplay = ContentDisplay(loader.getContent("name"));
var b1 = Bitmap(cd.rawContent);
var old = b1.bitmapData;
var bmp = new Bitmap(b1);

container.addChild(bmp);

原始图像在alpha通道上有50%,但是当我从同一个bitmapData对象创建新位图时,它不会保留alpha通道。

如果我尝试复制alpha通道(请参阅下面的代码;如果我理解正确,将alpha通道从自身复制到自身) - 透明度在新图像上,但代码会引发错误。

bmp.copyChannel(old, new Rectangle(0, 0, old.width, old.height), new Point(), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA);

错误:

ReferenceError: Error #1069: Property copyChannel not found on flash.display.Bitmap and there is no default value.
    at barmask/frame1()

如何复制PNG并保持Alpha透明度...最好没有错误?

P.S。请原谅任何明显的错误,我是一个ActionScript Newb ......

3 个答案:

答案 0 :(得分:2)

他的回答非常接近完成:

new BitmapData(w, h, true, 0); 

确保闪光灯不包含新图像背景的最后一个属性。这应该可以解决你的问题。它必须是“0”,而不是0x000000。

答案 1 :(得分:0)

创建您的BitmapData实例,将3个参数传递给构造函数:new BitmapData(w, h, true)Boolean值为透明度
还要检查来源BitmapData

transparent属性

答案 2 :(得分:0)

Bitmap没有copyChannel方法,因为错误说明了:)

而不是:

bmp.copyChannel(...

你需要这样做:

bmp.bitmapData.copyChannel(...