2016-06-10 77 views
0

這個問題已經有在工作答案:Weird graphical bug in > AS3?顏色基於距離

我試圖在AS3一個簡單的瓷磚照明系統和我遇到的問題是,我不知道如何使用十六進制顏色代碼

根據距離來改變顏色繼承人的顏色代碼改變部分:

for (var i:int = 0; i < buttons.length; i++) { 
    lightFact = getDistance(lightSource, buttons[i]) 
    colorTransform2.color = 0x000000 
    DisplayObject(buttons[i]).transform.colorTransform = colorTransform2; 
} 

如果您無法從函數名稱中找出它,則lightFact是來自lightSource的距離。

+0

那麼你的問題的顏色計算或距離計算?大概前者是因爲你的代碼已經被硬編碼了,但是清楚的說明會很好。如果你想看到一些調整亮度/黑暗的代碼,請參閱[本示例](http://www.veryinteractivepeople.com/?p=323)或[this one](http://stackoverflow.com/questions/) 2258800 /如何-可以-I-計算-色調-對的一給定 - 己色合動作-3) – BadFeelingAboutThis

回答

2

我不確定這段代碼的最終目標是什麼,但我們現在就去。

getDistance()應該返回一個數字值。下一步是創建一個將數字編碼爲顏色的函數或算法。這可能是隻設置RGB顏色等於遠處的R(在255設置一個上限)或許多if - else之類的語句:

if(lightFact < XValue) 
{ 
    colorTransform2.color = 0xFF0000; 
} 
else if(lightFact < YValue) 
{ 
    colorTransform2.color = 0x00FF00; 
} 
else 
{ 
    colorTransform2.color = 0x0000FF; 
} 

或任何其它更復雜的編纂你可能會喜歡。無論選擇哪種編碼方式,都需要某種邏輯來檢查lightFact的值,並根據它(以及您可能具有的其他變量)進行計算或決定將不同的值設置爲colorTransform2.color。否則colorTransform.color將始終爲0x000000(黑色/關閉)。