如何从Actionscript 3.0中的Color对象获取十六进制值?

时间:2013-08-02 15:05:56

标签: actionscript-3 actionscript colors hex uint

所以我正在制作一个音乐可视化工具,我正在尝试将我的图形线条样式设置为预定义的颜色!但是我在尝试时遇到错误

var lineColor:Color = new Color(120,120,12);
graphics.lineStyle(lineThickness, lineColor);
  

1067:fl.motion类型的隐式强制:颜色为不相关的类型uint。

然后我尝试了

var lineColor:Color = new Color(120,120,12);
graphics.lineStyle(lineThickness, lineColor.color);

lineColor.color总是返回0!我该怎么办?我无法相信没有内置的API来获取颜色对象并使其成为图形的兼容十六进制uint!

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:2)

只需使用方法返回十六进制值。

function get_uint_from_colour(red:int, green:int, blue:int) {

    return red << 16 | green << 8 | blue;

}

所以在你的例子中:

graphics.lineStyle(lineThickness, get_uint_from_colour(120, 120, 12));

在回答您关于需要使用一组预定义的Color对象的评论时,您仍然需要(在某些时候)将它们转换为uint类型,因为这是被接受的lineStyle方法的数据类型。

我的建议是调整get_uint_from_colour方法以接受Color对象。像这样:

function get_uint_from_colour(colour:Color) {

    return int(colour.redMultiplier) << 16 | int(colour.greenMultiplier) << 8 | int(colour.blueMultiplier);

}

所以在你的代码中:

graphics.lineStyle(lineThickness, get_uint_from_colour(lineColor));

请注意我已更改原始方法的名称,因为我觉得它更能描述功能

另外,请记住,Color对象可以包含比标准十六进制颜色更多的自身信息 - 这些多余的信息在转换过程中会丢失。