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:
La imagen de la paleta a usar.
Un clip de película llamado en instancia, "paleta_mc"
Otro clip de película llamado en instancia, "punto_mc"
Y otro clip llamado en instancia "selec_mc"
Un cuadro de texto dinámico, llamado en instancia, "valores_txt"
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:
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......
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. Por:M@U
jejeejje no soy muy ducho en AS3....creo que mejor alguien con mas experiencia en ese terreno la haria mejor...
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