2013-08-02 20 views
0

因此,我正在製作一個音樂可視化工具,我正在嘗試將我的圖形的linestyle設置爲預定義的顏色!類型用於fl.motion的值隱式強制:顏色給無關聯的uint類型,但我想如何從Actionscript 3.0中的Color對象獲取十六進制值?

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

1067時出現錯誤。

於是我試着

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

lineColor.color總是返回0!我該怎麼辦?我不能相信沒有內置的API來獲取顏色對象,並使它成爲圖形兼容的十六進制uint!

任何幫助都會非常讚賞!

回答

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對象可以容納比標準十六進制顏色更多的關於它自己的信息 - 這些多餘的信息在轉換過程中會丟失。

+0

謝謝!那是解決問題的一種方法。但是有沒有特別使用Color對象的方法?因爲我在這個類中使用了多個顏色變量。 – user2646408

相關問題