Bir süredir aklımda olan bir fikir, olabildiğince farklı (sınırlar dahilinde) renkler için gerektiği kadar renk üretmek. Ekstra güçlük, aynı grafik için daha sonra birkaç renge ihtiyaç duyarsam (belki birkaç ekstra bar eklenirse), mevcut renkleri aynı tutarak, aynı şemaya uymaları gerekir.
Karşılaştığım fikir biraz hileli bir numara. Bir renk çemberi hayal edin (belki de her biri herhangi bir renk boşluğu ile tanımlayabilseniz de, her biri aynı doygunluk ve parlaklık ile farklı bir renk tonu olabilir). Bu daire için derece cinsinden bir açı vermek yerine, sıfırdan 255'e kadar bir aralığa sahip olun. İkili olarak, bu 00000000 - 11111111'e kadardır. (teknik açıdan toplama ve çıkarma, modulo 256'dır).
İşin püf noktası, bu sayıları bit-tersine çevirmek için sıfır rengi, bir rengi vb. Seçtiğinizde. Bunu C de yapmak için kullanırdım ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
Böylece dizisi 0, 1, 2, 3, 4, 0, 128, 64, 192, 32'ye dönüştürülür.
Mesele şu ki, 256 farklı renginiz var ve en erken olanlar çok geniş bir aralığa sahip, sonrakiler daha az geniş bir alana yayılıyor ve boşlukları dolduruyor (64 0 ile 128 arasında, yarı yarıya, 32 0 ile 64 arasında vb.).
Belirli bir "açı" için herhangi bir bit genişliği, bit tersini uyarlarsanız işe yarar ve tabii ki rengin farklı parametreleri için aynı anda birden fazla döngü çalıştırabilirsiniz (belki de renk tonu hızlı bir şekilde döner, ancak doygunluk daha yavaş olur).
Bu, yalnızca "açılarınızı", belirli RGB numaralarıyla nasıl eşleştireceğiniz sorusunu, neyin uzmanı olmadığımı - oh ve ActionScript'in bit-kiddling'i destekleyip desteklemediği sorusunu bırakıyor.