所以我正在制作一个音乐可视化工具,我正在尝试将我的图形线条样式设置为预定义的颜色!但是我在尝试时遇到错误
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!
任何帮助都会非常感激!
答案 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
对象可以包含比标准十六进制颜色更多的自身信息 - 这些多余的信息在转换过程中会丢失。