AS3:具有alpha和blendmode的BitmapData.draw具有不正确的结果

时间:2017-04-21 18:35:39

标签: actionscript-3 flash bitmap transparency bitmapdata

我的sprite包含重叠的shape。精灵本身将其alpha设置为.5,因此我必须将精灵的blendmode设置为“图层”,以防止重叠部分彼此透明。在从here获取的截图中,它应该看起来像右边的那个。

enter image description here

现在我想从我的精灵中draw bitmapData,但我无法将生成的位图看作右边的图像。它最终看起来像中间的图像。

spriteBMD.draw(mySprite,null,mySprite.transform.colorTransform,"layer");

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

我对根本原因有一些想法,但无论如何它在这里如何运作:

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);