¿Quieres registrarte?

Paleta de colores en Flash con Actionscript 2

Por: Wyrm
1 de Septiembre del 2009
1244 de clabLevel
Otros artículos de Wyrm
3,526 visitas

En éste sencillo(mas o menos) tutorial, vamos a realizar una paleta de colores seleccionable con BitmapData. En éste caso, usaré Flash 8, y los archivos del tutorial, serán en ese formato.

Necesitamos:


Asi es como quedará al final:


Paleta de colores seleccionable en Flash con AS2


Vamos a crear un clip de película en la línea de tiempo principal, llamado en instancia "paleta_mc", que contendrá en su interior la fuente de donde se van a obtener los valores de color. En nuestro caso, he puesto una imagen de un espectro de colores cogida de internet, pero la primera vez use una captura de pantalla de la paleta de colores de Paint (jejejeje) y funcionó a la perfección.

Además, en una capa superior, vamos a incluir el clip "punto_mc", con forma de cruz que es el que vamos a desplazar por el tapiz.

Colocando el código


Éste es el código de la aplicación, que además es el único de toda la película, solo hay que situarlo en un primer fotograma.

Código :

//esta función es la que comprueba el color y se lo asigna a la muestra
function comprobar_color():Void {
   import flash.display.BitmapData;
   import flash.geom.ColorTransform;
   import flash.geom.Transform;
   // creamos un objeto bipmapdata con el contenido del clip de colores 
   var bitmap_1:BitmapData = new BitmapData(paleta_mc._width, paleta_mc._height);
   bitmap_1.draw(paleta_mc);
   // 
   // desplazamos el puntero de cruz y nos aseguramos de que no se salga del picker 
   punto_mc._x = Math.round(_root._xmouse);
   punto_mc._y = Math.round(_root._ymouse);
   if (punto_mc._x>paleta_mc._width-1) {
      punto_mc._x = paleta_mc._width-1;
   }
   if (punto_mc._y>paleta_mc._height-1) {
      punto_mc._y = paleta_mc._height-1;
   }
   if (punto_mc._x<0) {
      punto_mc._x = 0;
   }
   if (punto_mc._y<0) {
      punto_mc._y = 0;
   }
      // 
      // asignmos el color elegido al rectángulo de muestra 
   var color_sample:Color = new Color(selec_mc);
   color_sample.setRGB(bitmap_1.getPixel(punto_mc._x, punto_mc._y));
   // mostramos los valores RGB en la caja de texto
   var colorSeleccionado = deEXaRGB(bitmap_1.getPixel(punto_mc._x, punto_mc._y));
   valores = "RGB ("+colorSeleccionado.red+", "+colorSeleccionado.green+", "+colorSeleccionado.blue+")";
}
// cuando presionamos el clip de colores, ocultamos el ratón,
//  y ejecutamos la función comprobar_color() ,definida anteriormente
paleta_mc.onPress = function() {
   Mouse.hide();
   comprobar_color();
   delete _root.onMouseMove;
   _root.onMouseMove = function() {
      comprobar_color();
      updateAfterEvent();
   };
};
// paramos al liberar el ratón
paleta_mc.onRelease = function() {
   delete _root.onMouseMove;
   Mouse.show();
};
paleta_mc.onReleaseOutside = paleta_mc.onRelease;
// función auxiliar para convertir de hexadecimal a RGB
function deEXaRGB(valor:Number):Object {
   var RGB = new Object();
   RGB.red = (valor >> 16) & 0xFF;
   RGB.green = (valor >> 8) & 0xFF;
   RGB.blue = valor & 0xFF;
   return RGB;
}
stop();



Y ésto es todo...es fácil de entender y de modificar a gusto de cada uno. Espero que os haya gustado.

PD: Una aplicación posible, en una empresa de decoración, es cambiar el mc "selec_mc", por algún tipo de mueble/ropa/etc...y asi cambiarle el color...solo habría que profundizar un poco mas en el tema.

Y éste es el resultado, clickead con el cursor y arrastradlo por los colores:


Ejemplo del tutorial

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas diseño flash actionscript

Comentarios | Enviar un comentario
No se me había ocurrido usar BitmapData para algo como esto. Muy buen tip. Funciona muy similar en Actionscript 3.
Por: Freddie
Muchas Gracias, ;), voy a ver como funciona en AS3
Por: Wyrm
Wow... Muy simple y con excelentes resultados... Gran trabajo... Y muchas gracias
Por: riajiru

riajiru-blog :

Wow... Muy simple y con excelentes resultados... Gran trabajo... Y muchas gracias


Gracias a ti :)...

Luego si me da tiempo, intentaré poner un ejemplo prácticocon un mueble para que vean lo que se puede llegar ha hacer :)
Por: Wyrm
Éste es un ejemplo muy rudo sobre como implementarlo en un mueble, por ejemplo, una silla.
Hay que tener en cuenta, que si se quieren usar varios MCs como muestra de color, hay que poner el código

Código :

var color_sample:Color = new Color(selec_mc);
   color_sample.setRGB(bitmap_1.getPixel(punto_mc._x, punto_mc._y));
var color_sample2:Color = new Color(selec_mc2);
   color_sample2.setRGB(bitmap_1.getPixel(punto_mc._x, punto_mc._y));


En éste ejemplo el selec_mc es el color de donde nos sentamos, y el selec_mc2 es el reflejo pequeño que hay debajo...

No me lo he trabajado mucho porque solo queria enseñar como se podia implementar......

Por: Wyrm
Me parece ingenioso utilizar una imagen cualquiera para obtener de ahí los colores. Anímate a publicar una versión en AS3 antes de que te la ganenmos..! Buen tip.
:wink:
Por: M@U
jejeejje no soy muy ducho en AS3....creo que mejor alguien con mas experiencia en ese terreno la haria mejor...:P

Aunque probare, de eso estate seguro jejeje Gracias
Por: Wyrm
Me re ayudo el tip... necesito una ayudita mas. Como tendria que hacer si quiero jugar con dos muestras de colores a la vez. Supongamos que tengo la misma paleta y dos sillas y quiero aplicarle color de forma independiente... ojala puedas ayudarme.

gracias!
Por: c_di

c_di-blog :

Me re ayudo el tip... necesito una ayudita mas. Como tendria que hacer si quiero jugar con dos muestras de colores a la vez. Supongamos que tengo la misma paleta y dos sillas y quiero aplicarle color de forma independiente... ojala puedas ayudarme.

gracias!


Hola,
puedes intentarlo mediante dos punteros, uno para cada silla...
Por: Wyrm
Hola muchas gracias por el ejemplo; tengo una pregunta:

Inserté otra imagen en lugar de la paleta de colores pero sólo funciona en una zona de mi figura, ya le puse las mismas dimensiones que la paleta de colores 256*256 y coordenadas (0,0), podrías decirme qué más debo tomar en cuanta?

Gracias
Por: norma-blog

norma-blog :

Hola muchas gracias por el ejemplo; tengo una pregunta:

Inserté otra imagen en lugar de la paleta de colores pero sólo funciona en una zona de mi figura, ya le puse las mismas dimensiones que la paleta de colores 256*256 y coordenadas (0,0), podrías decirme qué más debo tomar en cuanta?

Gracias


Hola Norma, ahi tienes el ejemplo para descargar. Mira como funciona y luego lo adecuas a tus necesidades. No te olvides de los nombres de instancia...
Por: Wyrm
Tenemos un blog.Queremos saber cómo achicar el formato de una foto para que quede más chica porque está lento para abrir el blog por el tamaño de las fotos. muchas gracias.
Por: marina-blog
Una consulta como haria si quisiera en vez de los colores tenga imagenes y quisiera arrastrarlas a un escenario y que se coloquen ahi sin que se muevan.
Por: Andres-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.