Una idea que he tenido en mente por un tiempo es generar colores tan diferentes como sea posible (dentro de los límites) para tantos colores como sea necesario. La molestia adicional es que si necesito un par de colores adicionales más adelante para el mismo gráfico (tal vez se agreguen un par de barras adicionales), deben encajar en el mismo esquema, manteniendo los colores existentes iguales.
La idea que se me ocurrió es un truco poco complicado. Imagine un círculo de colores (quizás cada uno con un tono diferente con la misma saturación y brillo, aunque podría definir cualquier círculo a través de cualquier espacio de color). En lugar de dar un ángulo en grados para ese círculo, tenga un rango de cero a 255. En binario, eso es 00000000 a 11111111. Agregue uno a un bit de 255 y se desborda a cero, por lo que actúa naturalmente como un "valor circular" (en términos técnicos, la suma y la resta es el módulo 256).
El truco es cuando selecciona el color cero, el color uno, etc., para invertir esos números. Para hacer eso en C, usaría ...
value = ((value & 0x0F) << 4) | ((value & 0xF0) >> 4);
value = ((value & 0x33) << 2) | ((value & 0xCC) >> 2);
value = ((value & 0x55) << 1) | ((value & 0xAA) >> 1);
Entonces la secuencia 0, 1, 2, 3, 4 se transforma a 0, 128, 64, 192, 32.
El punto es que tiene 256 colores distintos, y los primeros están muy espaciados, mientras que los últimos se espacian menos y llenan los espacios (64 está a medio camino entre 0 y 128, 32 está a medio camino). entre 0 y 64 etc.)
Cualquier ancho de bits para un "ángulo" particular funcionará si adapta el retroceso de bits y, por supuesto, podría ejecutar varios ciclos a la vez para diferentes parámetros del color (tal vez el tono gira rápidamente, pero la saturación gira más lentamente).
Eso solo deja la pregunta de cómo mapeas tus "ángulos" a números RGB particulares o lo que sea, en lo que no soy un experto, oh, y la pregunta de si ActionScript admite juegos de bits.