【问题标题】:AS3: BitmapData.draw with alpha and blendmode has incorrect resultAS3:带有 alpha 和混合模式的 BitmapData.draw 结果不正确
【发布时间】:2017-04-21 18:35:38
【问题描述】:

我有一个sprite,其中包含重叠的shapes。精灵本身会将其 alpha 设置为 0.5,因此我必须将精灵的 blendmode 设置为“图层”,以防止重叠部分看起来彼此透明。在这张来自here 的屏幕截图中,它应该看起来像右边的那个。

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

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

有谁知道我做错了什么?

【问题讨论】:

  • 只是一个疯狂的猜测。尝试将其放入容器和绘图容器中,而不是目标精灵。

标签: actionscript-3 flash bitmap transparency bitmapdata


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    相关资源
    最近更新 更多