У меня есть список значений от 0 до 1 ...
Предположим, этот список является массивом с именем myList
. Он имеет 100 значений в диапазоне от 0
до 1
(или 0,99).
Чтобы отобразить длину 100 записей в ожидаемые 255 (зеленого и синего, чтобы получить белый), просто разделите:
(255/myList.length); //gives 2.55
2.55 * ( myList[i] * 100 ) //gives 0-255 range version (eg: myList[i]==0.5... now is 127)
Сначала объявите некоторые переменные ...
public var temp_R :uint = 0;
public var temp_G :uint = 0;
public var temp_B :uint = 0;
public var RGB :uint = 0; //output colour (24-bit)
Затем просто обновите, используя цикл For ...
for (var j:uint = 0; j < myList.length; j++)
{
//maximum 255 is divided by total values...
//multiply by 100 to ramp up the List value... eg: If "myList[j]" == 0.5 then we want as == 50
temp_Int = (255 / myList.length) * ( 100 * myList[j] );
if( temp_Int > 255) { temp_Int = 255;} //clamp to 255 range
temp_R = 255; //kept as constant value of 255
temp_G = temp_B = temp_Int; //for whitening, these other two share same value
RGB = (temp_R << 16) | (temp_G << 8) | temp_B; //generate output colour
temp_BMD.setPixel(j, k, RGB );
}
Та же логика в незначительном более компактном цикле
for (var j:uint = 0; j < myList.length; j++)
{
temp_Int = (255 / myList.length) * ( 100 * myList[j] );
temp_R = 255; temp_G = temp_B = temp_Int; //set R to 255, set G and B to "temp_Int"
RGB = (temp_R << 16) | (temp_G << 8) | temp_B; //generate output colour
//temp_BMD.setPixel(j, 0, RGB ); //visual test on a Bitmap-Data object
}
Примечание: Вы также можете «уменьшить» точку пика, используя (255 / (myList.length / X) );
, где X
- это небольшое значение, такое как 2, 4 или 8. Может быть, это в некоторой степени полезно для более поздних проектов.