Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3:复制PNG图像会导致透明度损失_Actionscript 3_Actionscript_Png_Transparency_Loader - Fatal编程技术网

Actionscript 3 AS3:复制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

我使用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透明度。。。最好没有错误


另外,请原谅任何明显的错误,我是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复制到新位图中的代码