Estoy trabajando en mi primer proyecto de Flash, y para mi preloader me gustaría hacer un degradado muy simple basado en el porcentaje cargado. El precargador dice "77% cargado ...", donde el número 77 es una instancia de texto dinámico llamada percentLoaded. Me gustaría que el textColor de percentLoaded cambie en un gradiente de # 000000 a #FFFFFF, en escala de grises.gradiente RGB basado en el porcentaje de archivo cargado
Por lo tanto, no puedo simplemente hacer:
percentLoaded.textColor=(currentValue/100)*0xFFFFFF;
Esto se convierte la textColor a un múltiplo de FFFFFF, pero da salida a un color ya que es menos de tres componentes separados. En la actualidad, esto es lo que tengo:
percentLoaded.text=currentValue.toString();
percentLoaded.textColor=rgb2hex((currentValue/100)*255, (currentValue/100)*255, (currentValue/100)*255);
Donde "rgb2hex" es una función definida dentro de la clase como tal:
public function rgb2hex(r:Number, g:Number, b:Number) {
return '0x'+(r << 16 | g << 8 | b).toString(16).toUpperCase();
}
No se ve como esto está cambiando en realidad el color de la fuente sin embargo. He importado flash.text.TextField y flash.display.MovieClip, pero no estoy seguro de si me falta algo más. ¿Esto sería más fácil de hacer con la concatenación de cadenas? ¿O tal vez está pasando algo con currentValue/100 y pasándolo como un Número?
Si es curioso, encontré el código para rgb2hex here.
Gracias!
Esto no funciona. intente establecer currentValue en 1. Obtiene 0x28f5c. necesita convertir ((actualValor/100) * 0xFF) a un int antes de multiplicar por 0x010101. – Ponkadoodle
Es cierto, me olvidé de eso, reparado; gracias por notar eso! El elenco realmente necesita seguir el resultado de la división, ya que es por eso que sucede - La clase 'Number' de Flash es un flotante IEE. Casting to uint debería resolverlo. – LiraNuna
No, el valor actual está entre 0-100. Si lanzas después de dividir, pero antes de multiplicar por 0xFF, obtendrás un 0 o un 1. Quiere una escala de grises completa, no solo negro/blanco. Y el problema no surge de imprecisiones de coma flotante. Es porque su formato (* 0x010101) es esencialmente tres campos (01, 01, 01). No se espera que algo en un campo sea influenciado por otro campo. Pero al usar un valor mayor que 255, permite que un campo bajo influya en un campo alto, y un valor entre enteros permite que un campo alto influya en un campo inferior. Prueba 1.5 * 0x010101 para ver a qué me refiero. – Ponkadoodle