Actionscript 3 AS3:复制PNG图像会导致透明度损失
我使用LoaderMax加载外部PNG并在许多地方显示,因此我使用以下代码复制图像:Actionscript 3 AS3:复制PNG图像会导致透明度损失,actionscript-3,actionscript,png,transparency,loader,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%,但当我从同一bitmap
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透明度。。。最好没有错误
另外,请原谅任何明显的错误,我是ActionScript新手…创建您的
BitmapData
实例,将3个参数传递给构造函数:,布尔值是透明的
还要检查源位图数据的属性
他的答案非常接近完成:
new BitmapData(w, h, true, 0);
确保flash在新图像中不包含背景的最后一个属性。这应该能解决你的问题。它必须精确地为“0”,而不是0x000000。位图没有copyChannel方法,如错误所示:)
与此相反:
bmp.copyChannel(...
您需要这样做:
bmp.bitmapData.copyChannel(...
这似乎不起作用。我使用您推荐的构造函数创建了一个新的BitmapData,但仍然需要将像素从旧复制到新。这仍然没有保留alpha通道。那么源BitmapData
的transparent
属性呢?下面是一篇关于使用BitmapData对象的文章。下面是一些成功使用draw()将alpha BitmapData复制到新位图中的代码