我在Flash中转换颜色有困难。我认为应该很容易,但由于某些原因,我的代码没有按预期工作。
我有一个位图图形,包括从红色到黄色到绿色的色谱(你知道,就像你在音频电平表中看到的那样)。
我只是想从该位图中采样一种颜色,然后在采样颜色的舞台上为一个影片剪辑着色。 (我将要采取的效果是彩色进度 - 显示越接近100%绿色,越接近0%它是红色的 - 我还没有实现那个部分,但我并不担心这一点)。
无论如何,我对颜色进行了很好的采样,并对我的剪辑进行着色,但无论我对剪辑进行着色,它都会产生与我采样的颜色不同的颜色(迹线颜色与我在夹)。我无法看到我出错的地方 - 我希望这是一个愚蠢的错误,有人可以轻易发现它。
import flash.display.BitmapData;
var bmd:BitmapData = new BitmapData(mc_colourbar.width, mc_colourbar.height);
bmd.draw(mc_colourbar);
var pixelvalue:uint = bmd.getPixel(0, 1);
trace(pixelvalue.toString(16));
var colourtransform:ColorTransform = mc_box.transform.colorTransform;
colourtransform.color = uint("0xff" + pixelvalue);
mc_box.transform.colorTransform = colourtransform ;
mc_box是我尝试着色的舞台上的剪辑 - 它只是一个白色方块。
感谢任何帮助,提前谢谢!
答案 0 :(得分:1)
ColorTransform.color
需要一个RGB值,看起来好像你试图给它一个ARGB值*。
更改行:
colourtransform.color = uint("0xff" + pixelvalue);
只是:
colourtransform.color = pixelvalue;
并且您的代码应该按预期工作。
*虽然我不会认为您尝试这样做的方式是正确的。