2010-08-25 66 views
1

如何在十六進制中理想地創建自定義色階?說從黃色到紅色,取決於物體的高度?這是實現這一目標的正確道路或者是有沒有就不必在年底?:基於自定義範圍的顏色比例?在HEX?

var r:int = 255; 
var b:int = 0; 
var maxHeight:int = 52; 
var minHeight:int = 21; 

var scale:int = 255/(maxHeight-minHeight); 

var g:int = 255 - ((object.height-minHeight) * scale); 

var hexColor:uint = RGBtoHEX(r,g,b); 

private function RGBtoHEX(r:int, g:int, b:int) :uint 
{ 
return r << 16 | g << 8 | b; 
} 

回答

1

這裏轉換一種更好的方法是一個函數,可以讓你找到之間的顏色值另外兩個基於0-1的範圍。我認爲它會滿足你的需求

private function getBetweenColourByPercent(value:Number = 0.5 /* 0-1 */, highColor:uint = 0xFFFFFF, lowColor:uint = 0x000000):uint { 
    var r:uint = highColor >> 16; 
    var g:uint = highColor >> 8 & 0xFF; 
    var b:uint = highColor & 0xFF; 

    r += ((lowColor >> 16) - r) * value; 
    g += ((lowColor >> 8 & 0xFF) - g) * value; 
    b += ((lowColor & 0xFF) - b) * value; 

    return (r << 16 | g << 8 | b); 
} 
+0

非常感謝 - 我只是想出了一個辦法,只是文學更新了我原來的問題。但是,這看起來可能是達到預期效果的一個好方法。乾杯! – davivid 2010-08-25 15:56:28