Pomysłem, który miałem na myśli od dłuższego czasu, jest generowanie tak różnych, jak to możliwe (w ramach limitów) kolorów dla dowolnej liczby kolorów. Dodatkowym problemem jest to, że jeśli potrzebuję później dodatkowej pary kolorów dla tego samego wykresu (może dodanych jest kilka dodatkowych słupków), muszą one pasować do tego samego schematu, zachowując te same kolory.
Pomysł, który wymyśliłem, to trochę zabawna sztuczka. Wyobraź sobie koło kolorów (być może każdy ma inny odcień o tym samym nasyceniu i jasności, choć możesz zdefiniować dowolne koło w dowolnej przestrzeni kolorów). Zamiast podawać kąt dla tego okręgu w stopniach, zakres wynosi od zera do 255. W systemie dwójkowym oznacza to od 00000000 do 11111111. Dodaj jeden do 8-bitowego 255 i przepełni się z powrotem do zera, więc działa naturalnie jako „wartość kołowa” (pod względem technicznym dodawanie i odejmowanie to modulo 256).
Sztuką jest wybranie koloru zero, koloru jeden itp., Aby odwrócić liczby bitowe. Aby to zrobić w C, użyłbym ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
Tak więc sekwencja 0, 1, 2, 3, 4 jest przekształcana na 0, 128, 64, 192, 32.
Chodzi o to, że masz 256 różnych kolorów, a najwcześniejsze są bardzo szeroko rozstawione, a późniejsze są mniej rozstawione i wypełniają luki (64 jest w połowie między 0 a 128, 32 jest w połowie od 0 do 64 itd.).
Każda szerokość bitów dla określonego „kąta” będzie działać, jeśli dostosujesz odwrotność bitów i oczywiście możesz uruchomić wiele cykli jednocześnie dla różnych parametrów koloru (może barwa obraca się szybko, ale nasycenie obraca się wolniej).
Pozostawia to tylko pytanie, w jaki sposób mapujesz swoje „kąty” na określone liczby RGB lub cokolwiek innego, o czym nie jestem ekspertem - oh, i pytanie, czy ActionScript obsługuje bit-fiddling.