Purtroppo non ad usare la funzione coloriIntermedi.. non funziona.
Nel frattempo però ho scritto io del codice che apre funzionare, ma penso che abbia bisogno di una messa a punto. Infatti se inverto il colore di destinazione e il colore di partenza, la sfumatura non si "gira" simmetricamente, ma cambiano le tonalità intermedie. Ovviamente imamgino che sia sempre un problema di operazioni in esadecimale.
Posto qui il codice nella speranza di un "intervento provvidenziale"
note: Colore1Grafica e Colore2Grafica sono ovviamente i colori di partenza e di arrivo. Secondo me i problemi sono a livello di calcolo delle variabili "Incremento" e "TintaIntermedia".
codice:
function Sfumatura(){
R1 = Colore1Grafica >> 16;
G1 = (Colore1Grafica >> 8) - (R1 << 8);
B1 = Colore1Grafica - (R1 << 16) - (G1 << 8);
R2 = Colore2Grafica >> 16;
G2 = (Colore2Grafica >> 8) - (R2 << 8);
B2 = Colore2Grafica - (R2 << 16) - (G2 << 8);
NumeroPassaggi = 14;
IncrementoR = Int(R2 - R1) / NumeroPassaggi;
IncrementoG = Int(G2 - G1) / NumeroPassaggi;
IncrementoB = Int(B2 - B2) / NumeroPassaggi;
TintaIntermedia = Colore1Grafica;
trace(IncrementoR + "." + IncrementoR.ToString(16) + " " + IncrementoG.ToString(16) + " " + IncrementoB.ToString(16));
for(var IntermedioDaColorare = 1; IntermedioDaColorare < (NumeroPassaggi+1); IntermedioDaColorare++){
TintaIntermedia = TintaIntermedia + (IncrementoR << 16) + (IncrementoG << 8) + IncrementoB;
ColoraIntermedio(IntermedioDaColorare,TintaIntermedia);
}
}
function ColoraIntermedio(Intermedio, Colore){
my_color = new Color(_root.istGrafica["istx" + (NumeroPassaggi - Intermedio + 1)]);
my_color.setRGB(Colore);
}