Actionscript 3 AS3:使用alpha和blendmode绘制的BitmapData.draw结果不正确
我有一个Actionscript 3 AS3:使用alpha和blendmode绘制的BitmapData.draw结果不正确,actionscript-3,flash,bitmap,transparency,bitmapdata,Actionscript 3,Flash,Bitmap,Transparency,Bitmapdata,我有一个sprite,它包含重叠的shapes。精灵本身的alpha值将设置为.5,因此我必须将精灵的blendmode设置为“layer”,以防止重叠部分彼此透明。在这张从的截图中,它应该看起来像右边的那个 现在我想从sprite中绘制位图数据,但无法使生成的位图看起来像右边的图像。它最终看起来像中间的图像。 spriteBMD.draw(mySprite,null,mySprite.transform.colorTransform,"layer"); 有人知道我做错了什么吗?我对根本原因
sprite
,它包含重叠的shape
s。精灵本身的alpha值将设置为.5,因此我必须将精灵的blendmode
设置为“layer”,以防止重叠部分彼此透明。在这张从的截图中,它应该看起来像右边的那个
现在我想从sprite中绘制位图数据,但无法使生成的位图看起来像右边的图像。它最终看起来像中间的图像。
spriteBMD.draw(mySprite,null,mySprite.transform.colorTransform,"layer");
有人知道我做错了什么吗?我对根本原因有一些想法,但不管怎么说,它是如何工作的:
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.display.Bitmap;
import flash.geom.ColorTransform;
var bmd:BitmapData = new BitmapData(mc.width, mc.height);
var bitmap:Bitmap = new Bitmap(bmd);
var sourceTransform:ColorTransform = mc.transform.colorTransform;
var bmdTransfrom:ColorTransform;
if(mc.blendMode == BlendMode.NORMAL)
{
bmdTransfrom = sourceTransform;
}else
{
bitmap.transform.colorTransform = sourceTransform;
}
bmd.draw(mc, null, bmdTransfrom, mc.blendMode);
addChild(bitmap);
只是胡乱猜测。尝试将其放入容器和绘图容器,而不是目标精灵。