Я разрабатываю игру, и игра сильно требует использования цвета для моих карт. Я хотел использовать градиенты для подсчета чисел в hexidecimal (например, # 000001, # 000002 и т. Д., Потому что рисовать все это было бы тяжелой работой), чтобы разграничить холмы и тому подобное, потому что именно так я разработал систему для работы. Итак, проверяя эту систему, я понимаю, что градиент по умолчанию рассчитывает по шагам в каждом цвете каждый, а не только снизу, как я хотел (моя цель - от # 000000 до # 000CCC, поэтому она добавляла 1 к зеленому и Синие значения вместо синего). Я обнаружил флажок «Линейный RGB» и надеялся, что он это сделает, но это как-то не так. Он иногда работает с такими значениями, как # 00CCCC, но когда я пытаюсь # 0000000 на # 000CCC, он останавливается на # 0000CB без причины, хотя он подсчитывает только значения Blue. Я использую Flash CS4, не уверен, что это проблема на моем конце или что-то еще. Кроме того, Flash-документы не дают мне информации о том, что делает флажок Linear RGB, поэтому, если кто-то может объяснить это, это тоже здорово.Adobe flash linear rgb issues
ответ
согласно вашим требованиям, это является примером вычислительных шагов между 0x000000 и 0x000ccc
10 шагов
32-шаги:
var startColor:uint = 0x000000;
var endColor:uint = 0x000ccc;
var steps:uint = 10;
var graphics:Graphics = graphics;
for (var i:uint = 0; i < steps; i++)
{
var r:uint = ((endColor >>> 16 & 0xFF) - (startColor >>> 16 & 0xFF)) * (i/steps);
var g:uint = ((endColor >>> 8 & 0xFF) - (startColor >>> 8 & 0xFF)) * (i/steps);
var b:uint = ((endColor & 0xFF) - (startColor & 0xFF)) * (i/steps);
var stepColor:uint = r << 16 | g << 8 | b;
graphics.beginFill(stepColor);
graphics.drawRect(i * 24, 24, 24, 24);
graphics.endFill();
}
Ваша эмиссия e, вероятно, манипулирует значениями RGB; Однако, вот документы, касающиеся методов интерполяции:
От Adobe Docs flash.display.InterpolationMethod http://livedocs.adobe.com/livecycle/es/sdkHelp/common/langref/flash/display/InterpolationMethod.html
Linear RGB:
Указывает, что линейный RGB метод интерполяции следует использовать. Это означает, что Flash Player использует цветовое пространство RGB на основе линейной цветовой модели RGB.
RGB
Указывает, что метод интерполяции RGB, должен быть использован. Это означает, что Flash Player использует экспоненциальное пространство sRGB (стандартное RGB), когда визуализирует градиент. Пространство sRGB является стандартом, одобренным W3C, который определяет нелинейное преобразование значений красного, зеленого и синего компонентов и фактическую интенсивность цвета видимого компонента. Например, рассмотрим простой линейный градиент между двумя цветами (с параметром spreadMethod, установленным в SpreadMethod.REFLECT). В различные методы интерполяции влияют на внешний вид следующим образом:
InterpolationMethod.LINEAR_RGB InterpolationMethod.RGB
Первое спасибо за разъяснения по RGB и ссылке. Я боюсь сказать, но я просто не могу это сделать с помощью программируемого метода. Я пробовал искать, чтобы учиться из вашей программы, и есть много побитовых функций и таких ... Послушайте, решение, которое я хочу, не является градиентом.Я хочу иметь возможность подсчитывать вверх с синими значениями, которые в конечном итоге разливаются на зеленый, а затем красный. Я хочу, чтобы значения цвета действовали как обычный номер. Градиент - это просто эффективный способ получить от одного числа к другому в линейном и численном порядке. Есть ли у вспышки вариант или лазейка, которую я мог бы использовать для этого? –
На самом деле программируемый метод будет проще, поскольку он позволяет мне рассматривать значение цвета как uint, но у меня не будет точности, которую Flash предоставляет мне для рисования с градиентом для определенной области. Или есть какая-то другая программа, которую я мог бы использовать для этого? (Хотя это может быть жесткое импортирование изображения обратно во Flash) –