Como sabrán en las versiones de flash MX la clase color nos permitía cambiar el color de un movieClip desde AS, esta clase a quedado inutilizada desde la versión 8 en adelante y ha sido reemplazada por la clase ColorTransform.
Para ver un ejemplo concreto de cómo trabaja dicha clase, vamos a dibujar un movieCip en nuestro escenario y le cambiaremos el color desde el ActionScript. A esto le vamos a sumar la posibilidad de que el usuario pueda elegir el color a pintar.
Algo a tener en cuenta antes de continuar es saber que la clase color utilizaba como “color” un valor hexadecimal y en cabio la clase “ColorTransform” usa un valor RGB (rojo, verde y azul) por lo tanto vamos a tener que hacer una función que se encargue de transformar nuestro valores hexadecimales a RGB.
A continuación expongo el código con los cometarios de cada sección:
-
//importamos las clases necesarias
-
import flash.geom.Transform;
-
import flash.geom.ColorTransform;
-
//creamos una variable para Transform y le asignamos el elemento a pintar
-
var trans:Transform = new Transform(rect);
-
//creamos una variable con el color inicial
-
var color:Number = 000000;
-
//llamamos la función encargada de pasar nuestro color hexadecimal a RGB
-
var ConvColor:Object = deEXaRGB(color);
-
//Esta es la función que se encarga de traspasar el modo HEX a RGB
-
function deEXaRGB(valor) {
-
var pre = "0x";
-
var RGB = new Object();
-
RGB.red = (pre+valor>> 16) & 0xFF;
-
RGB.green = (pre+valor>> 8) & 0xFF;
-
RGB.blue = pre+valor & 0xFF;
-
return RGB;
-
}
-
//creamos una función cosa que podamos volver a llamarla cada ves
-
//que cliquemos el colorPikup
-
function pintar() {
-
//acá almacenamos los valores RGB, como pueden ver recuperamos los valores desde un objeto
-
//"ConvColor" y simplemente concatenamos el objeto con el atributo, ejmp: ConvColor.red (rojo)
-
var blueColorTransform:ColorTransform = new ColorTransform(0, 1, 1, 1, ConvColor.red, ConvColor.green, ConvColor.blue, 0);
-
trans.colorTransform = blueColorTransform;
-
}
-
//pintamos por primera vez
-
pintar();
-
//creamos un detector para nuestro Color picker
-
cpicker.addListener(this);
-
this.change = function(evt:Object) {
-
//almaceno el color seleccionado
-
color = evt.getRGB();
-
//hago la conversion
-
ConvColor = deEXaRGB(color);
-
//vuelvo a pintar el cuadrado
-
pintar();
-
};
-
//NOTA: PARA ESTE EJEMPLO USE UN COLOR PICKER DE "sephiroth", ESTE ES UN COMPONENTE
-
//QUE PUEDEN DESCARGARLO DESDE ESTA URL: http://www.sephiroth.it/file_detail.php?id=147#
2 noviembre, 2007 at 4:26 pm
no tenias una foto tuya mas bonita? O alguna que estes peinado aunque sea...Un abrazo y felicitaciones por las siete mil visitas.
fulano
http://www.elmundosegunfulano.blogspot.com
12 enero, 2009 at 1:28 am
mm tengo una duda.. si quiero cambiarle el color a dos movieclips a la vez, que es lo que tengo que cambiar?
9 febrero, 2009 at 10:34 am
te queria preguntar como agregaste el cpicker, hablando si yo quiero hacerlo de 0, sin copiar el AdvColorPicker
10 febrero, 2009 at 10:24 pm
Marcos, el colorPicker es un componente para flash8 ya que este no tiene dicho componente, ya en la versión 9 y as3 viene un colorpicker nativo de flash muy bueno y recomendable, pero es solo para AS3. Así que sino sabes AS3 puedes usar el componente que esta en mi ejemplo!
21 marzo, 2009 at 5:08 am
Quisiera saber como puedo una vez pintado un mc un texto me diga bien o mal, es decir validar la respuesta de color
Mil gracias, llevo un año intentandolo
21 marzo, 2009 at 3:46 pm
mddr te envie los files por email, pero seria algo asi:
25 marzo, 2009 at 2:41 pm
hola amigos queria saber como puedo hacer si tengo un dibujo de winnie pooh por ejemplo y quiero escojer el color de un valdecito y pintar al winnie del color que elija, si pueden ayudarme creo que tendria que dibujarlo y convertirlo como movie clip o grafico y tengo que hacerlo en archivos as en clases, porfa ayudenme ggracias
29 marzo, 2009 at 4:53 pm
El código es perfecto, pero se me plantea otro problema: Si tengo un mc en el escenario y lo tengo que pintar de rojo, eligiendo entre varios colores, como pongo el código de color en el if para que me funcione, el código que tengo es asi:
var my_color:Color = setRGB(0x000000);
my_color = new Color(bola);
my_color1 = new Color(cuadro);
cambiar.onPress = function() {
my_color.setRGB(0xFF0000);
my_color1.setRGB(0xFF0000);
};
cambiar1.onPress = function() {
my_color.setRGB(0x00ff00);
};
//my_color.setRGB(0x00FF00);!
//control de resposta:
control.onPress = function() {
if (my_color == 0xff0000) {
c1 = "BEN";
trace("BOBO");
} else {
c1 = "MAL";
}
};
6 octubre, 2009 at 3:50 pm
Hola, tengo que hacer un sistema de armadod e camisetas de futbol, en el cual se peudan elegir los colores de cada parte d ela camiseta, como el cuello, si tiene algun detalle, etc.
el tema es que me tira un error si quiero utilizar un switch o un if con el codigo que pasastes ahi, que solucion me podrias dar?
muchas gracias!
26 enero, 2010 at 6:48 am
Mi consulta es simple, como puedo hacer un boton en actionscript al que yo puedo asignarle los colores del over mediante un archivo XML?
8 septiembre, 2010 at 9:59 am
Hola, buenos días,
Me gustó mucho el ejemplo, era lo que necesitaba, pero me hace falta algo quiero que me muestre los números o los valores de los colores RGB en la pantalla, que función le agregó al script para hacer esto posible,
Muchas gracias...
28 noviembre, 2011 at 2:54 am
Necesito hacer exactamente eso que pones en el tutorial pero cambiando el color a dos objetos, esto como lo haría?