Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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:使用alpha和blendmode绘制的BitmapData.draw结果不正确_Actionscript 3_Flash_Bitmap_Transparency_Bitmapdata - Fatal编程技术网

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

只是胡乱猜测。尝试将其放入容器和绘图容器,而不是目标精灵。