Comunidad de diseño web y desarrollo en internet online

Imitar la función de la herramienta cuentagotas

Citar            
MensajeEscrito el 27 Dic 2006 04:39 am
Hola! Sabe alguien si hay alguna funcion en AS que me permita tomar un color del escenario (vector o mapa de bits) al estilo cuentagotas?
Gracias!

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Dic 2006 11:19 am
Para BitmapData en Flash 8:

tu_bitMap.getPixel(_xmouse, _ymouse) y
getPixel32 para incluir el canal alpha.

Devuelve un número que representa el color. Puedes aplicar el dato por ejemplo con setPixel(x,y,color) para cambiar un solo pixel
o utilizando alguno de los métodos de relleno como:
fillRect(rectangulo, color) que rellena ese rectángulo
o:
floodFill (x,y,color) que rellena el area cerrada donde se encuentra el punto (x,y).

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 27 Dic 2006 12:57 pm
hola! hice esto para obtener el color de un bitmap:

Código :

palette.onPress=function(){
   trace(palette.getPixel(_xmouse, _ymouse))
}


pero me devuelve UNDEFINED

cual seria la forma correcta?

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Dic 2006 04:40 pm
Estos métodos pertenecen a la clase Bitmap.

Sigue estos pasos:
1) En la biblioteca pones una imagen llamada digamos "paisaje".
2) Pinchas con ratón derecho sobre su icono en la biblioteca.
3) Pinchas en vinculación en el menú que aparece.
4) En la ventana que sigue: Propiedades de vinculación marcas Exportar para ActionScript , marcará también Exportar en primer fotograma, déjalo marcado. En identificador pon imagen (ese es el nombre que buscará el script para cargarlo en attach). Deja la entrada de Clase AS2 en blanco. pulsa Aceptar. Si todo ha ido bien, en las columnas de la biblioteca verás: nombre, tipo, nº de usos, y en vinculación la palabra imagen.

Ahora la cargaremos y asociaremos a un MC con el siguiente código:
Nota: el MC palette lo creamos vacio con el código, no tiene que haber ninguna instancia en el escenario con ese nombre o se borrará la primera. Tampoco necesitamos la imagen en el escenario.

Código :

import flash.display.BitmapData;
palette=this.createEmptyMovieClip("palette",this.getNextHighestDepth());
img = BitmapData.loadBitmap("imagen");
palette.attachBitmap(img,0);
// Ahora ya podemos manejar el bitmap con el MC que lo contiene:
palette.onPress=function(){
    colorget = img.getPixel(_xmouse, _ymouse)
   trace(colorget)
}


El trace te dará un valor en decimal que puedes usar así o convertir en formato hexadecimal con
trace ("0x"+ colorget.toString(16))

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 27 Dic 2006 05:24 pm
gracias!!!! puedes verlo funcionando aqui:
http://www.unnodesign.com/clients/tik/cuentagotas.html
el cuadrado grande será reemplazado por un prenda (Tshirt) que el usuario podrá colorear a su gusto, mangas, detalles, etc. Habia visto algunos tutos de cómo hacerlo pero en todos usan botones para cada color... pero esto es fantástico, con un buen escaner puedo digitalizar la tela directamente y armar mi paleta de acuerdo a las telas disponibles, sin tener que programar para cada boton un codigo de color... cuando cambia la tela, cambio el bitmap en la biblioteca y listo... MUCHISIMAS GRACIAS POR TU AYUDA!!!!

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Ene 2007 03:08 pm
no entiendo como hacer esa funcion de cuentagotas en flash alguien me podria explicar mas detalladamente por que intente lo anterior pero no me funciono... gracias por su ayuda....

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 12 Ene 2007 04:17 pm
Hola... podrías contar que parte no entiendes la función? mas detallado no se puede! (creo) Si te hace falta puedo enviarte el .FLA.

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Ene 2007 04:25 pm
gracias por responder a mi pregunta, tengo una paleta de colores, pero no se como hacer para que cuando le de clic a uno de mis colores cargue ese tipo de color y se lo añada con otro clic a un objeto, me ayudarias mucho si me mandas el .FLA

Gracias :D

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 12 Ene 2007 11:09 pm
ya hice de nuevo el ejemplo puesto arriba y funciono yo estaba mal la culpa es mia, ahora tengo la duda de como hacer que la captura del colorget se añada a un simbolo que tengo en mi pagina....

gracias :D :D :D

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 13 Ene 2007 01:28 pm
hola Chevy... me parece muy bien que lo hallas hecho por ti mismo, así que ahora te doy una pista para que termines el proyecto... hay una funcion que se llama colorTo y le pasas el parametro de color a un determinado MC.
Por ejemplo:

Código :

"MC".colorTo(0xcccccc,2,"linear");


Con eso cambia el color de la instancia MC en 2 segundos con una animación linear.
Si asignas esa acción al click del mouse al picar sobre tu paleta (eventos onClick, onPress, onRelease)
Reemplazas el valor 0xcccccc por la variable que te devuelve la acción que implementaste anteriormente.
Prueba, si no te paso el FLA.[/code]

Por unno

58 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Ene 2007 04:42 pm
la verdad no me funciona, no encuentro entre la ayuda de falsh el "colorTo" como funcion tambien reemplace 0xcccccc por colorget que supongo que es el que contiene el codigo del color y no funciona :cry: envio el codigo para ver si me podeis ayudar.

import flash.display.BitmapData;
palette = this.createEmptyMovieClip("palette", this.getNextHighestDepth());
img = flash.display.BitmapData.loadBitmap("imagen");
palette.attachBitmap(img, 0);
// Ahora ya podemos manejar el bitmap con el MC que lo contiene:
palette.onPress=function(){
colorget = img.getPixel(_xmouse, _ymouse)
trace(colorget)
pared.colorTo(colorget,2,"linear");
}

en mi escena tengo un movieclip llamado "pared".

atentamente
Sebastian Garcia

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 15 Ene 2007 04:43 pm
la verdad no me funciona, no encuentro entre la ayuda de falsh el "colorTo" como funcion tambien reemplace 0xcccccc por colorget que supongo que es el que contiene el codigo del color y no funciona :cry: envio el codigo para ver si me podeis ayudar.

import flash.display.BitmapData;
palette = this.createEmptyMovieClip("palette", this.getNextHighestDepth());
img = flash.display.BitmapData.loadBitmap("imagen");
palette.attachBitmap(img, 0);

palette.onPress=function(){
colorget = img.getPixel(_xmouse, _ymouse)
trace(colorget)
pared.colorTo(colorget,2,"linear");
}

en mi escena tengo un movieclip llamado "pared".

atentamente
Sebastian Garcia

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 16 Ene 2007 10:52 pm
Saludos
Aun no puedo hacer para que cambie de color mi movieclip.... ayuda :shock:

atentamente,
Sebastian Garcia

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 17 Ene 2007 02:21 pm
Veamos:
En el ejemplo tenemos en la biblioteca una imagen de un mapa de colores con nombre para vincular "imagen". De ahí tomaremos el color que deseemos.
Cuando pulsamos en él tomamos el color del pixel ( getPixel).
Ahora queremos trasladar ese color a otro MC...
Podemos rellenarlo del todo con ese color usando beginFill(colorget), despues dibujando el rectangulo del MC y terminando con endfill(). No es precisamente el mejor método.
Si lo que queremos es "rellenar" determinadas áreas de un MC tendremos que usar una asociación de MC y mapas de bit para lo cual efectuaremos las siguientes acciones:
Crear un bitmap nuevo. Si el Mc está instanciado con nombre pared lo haremos del siguiente modo:
marco= new flash.display.BitmapData(pared._width, pared._height);
marco.draw(pared);
pared.attachBitmap(marco, 1); // en 1 o en un nivel libre);

Ahora el movieclip pared tiene un bitMap. Tambien es posible no hacerle el attach al mismo MC sino crear uno vacio nuevo y trabajar con ese en lugar del original.(Eso haremos en el script de más abajo)
Y ahora para rellenar un area con el color escogido:
pared.onPress=function(){
marco.floodFill(_xmouse, _ymouse, colorget);
}

El script final quedaría más o menos así:

Código :

import flash.display.BitmapData;
palette=this.createEmptyMovieClip("palette", this.getNextHighestDepth());
img = BitmapData.loadBitmap("imagen");
palette.attachBitmap(img, 0);
palette.onPress=function(){
    colorget = img.getPixel(_xmouse, _ymouse)
}
marco= new flash.display.BitmapData(pared._width, pared._height);
marco.draw(pared);

pared2= this.createEmptyMovieClip("pared2", this.getNextHighestDepth());
pared2.attachBitmap(marco, 1);
pared2._x = pared._x; pared2._y = pared._y; // colocando el nuevo MC
pared._visible = false; // o delete pared si ya no lo vas a usar más.
pared2.onPress=function(){
    marco.floodFill(_xmouse, _ymouse, colorget);
}
De este modo rellenamos todo el area que tuviera un color con el color nuevo.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 18 Ene 2007 03:18 pm
Saludos a todos.
intente pero no funciona, debe ser que estoy salado o bruto :cry: , porfa envienme el fla para echarle una revisada :wink: ayudenme por que no me sale... gracias

Atentamente,
Sebastian Garcia[/flash]

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 18 Ene 2007 05:22 pm
Posiblemente sea el getPixel() y la colocación del MC.
Usa este script corregido:

Código :

import flash.display.BitmapData;
palette=this.createEmptyMovieClip("palette", this.getNextHighestDepth());
img = BitmapData.loadBitmap("imagen");
palette.attachBitmap(img, 0);
palette.onPress=function(){
   colorget = img.getPixel32(_xmouse, _ymouse)
}
marco= new flash.display.BitmapData(pared._width, pared._height);
marco.draw(pared);
pared2= this.createEmptyMovieClip("pared2", this.getNextHighestDepth());
pared2.attachBitmap(marco, 0);
pared2._x = pared._x; pared2._y = pared._y;// colocando el nuevoMC.
pared._visible = false; // o delete pared si ya no lo vas a usar más.
   pared2.onPress=function(){ 
   marco.floodFill(_xmouse-pared2._x, _ymouse -pared2._y, colorget);
}

Este es un ejemplo con ese código:
Clickar en la paleta y en el mc.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 18 Ene 2007 08:13 pm
gracias por el codigo funciona de maravilla.... ^^ .... eso es cuando importas una imagen :?

atentamente
Sebastian Garcia

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie
Citar            
MensajeEscrito el 19 Ene 2007 01:45 pm
Saludos a todos de nuevo tengo una duda, todo funciona bien pero la imagen que es importada aparce en la esquina superior izquierda trate de moverla con un palette._x=100; y palette._y=100;... pero no funciono, aparece 0 y otra cosa el no le da color al movieclip crea un cuadro blanco encima del movieclip, no se como hacer para que el movieclip sea el que cambie de color o por lo menos que el cuadro que aparece encima no sea un cuadrado, gracias...

Atentamente,
Sebastian Garcia

Por Chevy

165 de clabLevel

1 tutorial

Genero:Masculino  

Ecuador

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.