Ich arbeite an meinem ersten Flash-Projekt, und für meinen Preloader möchte ich einen ganz einfachen Farbverlauf basierend auf dem geladenen Prozentsatz erstellen. Der Preloader sagt "77% geladen...", wobei die Zahl 77 eine dynamische Textinstanz namens percentLoaded ist. Ich möchte die textColor von percentLoaded auf einem Gradienten von #000000 bis #FFFFFF, in Graustufen zu ändern.
Deshalb kann ich das nicht einfach tun:
percentLoaded.textColor=(currentValue/100)*0xFFFFFF;
Dies konvertiert einfach die textColor in ein Vielfaches von FFFFFF, gibt aber eine Farbe aus, da es sich nicht um drei separate Komponenten handelt. Derzeit ist hier, was ich habe:
percentLoaded.text=currentValue.toString();
percentLoaded.textColor=rgb2hex((currentValue/100)*255, (currentValue/100)*255, (currentValue/100)*255);
Dabei ist "rgb2hex" eine Funktion, die innerhalb der Klasse als solche definiert ist:
public function rgb2hex(r:Number, g:Number, b:Number) {
return '0x'+(r << 16 | g << 8 | b).toString(16).toUpperCase();
}
Es sieht aber nicht so aus, als würde sich die Farbe der Schrift tatsächlich ändern. Ich habe flash.text.TextField und flash.display.MovieClip importiert, bin mir aber nicht sicher, ob ich etwas anderes übersehen habe. Wäre es einfacher, dies mit String-Verkettung zu tun? Oder gibt es vielleicht etwas, das mit currentValue/100 und der Übergabe als Zahl zu tun hat?
Falls Sie neugierig sind, ich habe den Code für rgb2hex gefunden aquí .
Danke!