我正在處理我的第一個Flash項目,並且對於我的預加載器,我想根據加載的百分比做一個非常簡單的漸變。預加載器說「77%加載...」,其中數字77是一個名爲percentLoaded的動態文本實例。我希望percentLoaded的textColor以灰度級從#000000到#FFFFFF的漸變更改。基於加載文件百分比的RGB漸變
因此,我不能簡單地做:
percentLoaded.textColor=(currentValue/100)*0xFFFFFF;
這只是轉換的文字顏色到FFFFFF的倍數,但因爲它不是三個獨立的組件輸出的顏色。目前,這裏就是我的了:
percentLoaded.text=currentValue.toString();
percentLoaded.textColor=rgb2hex((currentValue/100)*255, (currentValue/100)*255, (currentValue/100)*255);
其中「rgb2hex」是在類中定義爲這樣的功能:
public function rgb2hex(r:Number, g:Number, b:Number) {
return '0x'+(r << 16 | g << 8 | b).toString(16).toUpperCase();
}
它看起來並不像這實際上是改變顏色字體雖然。我已經導入了flash.text.TextField和flash.display.MovieClip,但我不確定是否缺少其他東西。這會更容易處理字符串連接嗎?或者是否可能會出現currentValue/100並將其作爲數字傳遞?
如果好奇,我找到了rgb2hex here的代碼。
謝謝!
這不起作用。嘗試將currentValue設置爲1.您將獲得0x28f5c。您需要在乘以0x010101之前將((currentValue/100)* 0xFF)強制轉換爲int。 – Ponkadoodle 2010-01-21 01:05:53
沒錯,我忘記了,修好了;謝謝你的注意!演員實際上需要繼續進行除法結果,因爲這就是它發生的原因 - Flash的'Number'類是IEE浮點數。投向uint應該可以解決它。 – LiraNuna 2010-01-21 01:08:14
不,當前值介於0-100之間。如果你在分割之後進行投射,但在乘以0xFF之前,你會得到一個0或1.他想要全灰度,而不僅僅是黑/白。而且這個問題並不是浮點不準確。這是因爲你的格式(* 0x010101)基本上是三個字段(01,01,01)。它並不期待一個領域的某些東西受到另一個領域的影響。但是使用大於255的值,允許低場影響高場,而在整數之間的值允許高場影響較低場。試試1.5 * 0x010101來看看我的意思。 – Ponkadoodle 2010-01-21 01:18:42