Comunidad de diseño web y desarrollo en internet

Mini Paint en flash ¿cómo guardar lo que se pinta?

Citar            
MensajeEscrito el 28 Dic 2009 11:56 am
Buenas a todos

En primer lugar felicitarles la navidad.

Ahora vamos con la duda.

Tengo un par de tutoriales sobre como construir un mini paint similar al Paint de windows en flash.

Éste es muy sencillo

Éste es de cristalab, lo descubrí después del anterior (creado por Dano)

Bien, el primer tuto es muy sencillo y lo que se hace es crear un mc donde podemos dibujar a mano con el ratón.
El segundo tuto ya es más complicado, y permite dibujar 'vectorialmente' tal y como se hace en flash. En éste tuto se puede guardar lo dibujado y abrir el fichero posteriormente.

A partir del primer tuto he añadido unas cuantas opciones (unos botones para cambiar de color y una región determinada para dibujar). Me gustaría que el usuario pudiese dibujar algo y que se guardase lo dibujado, pero no se cómo. En el segundo tuto se guarda lo dibujado ya que se va apuntando cada paso (recta de punto (x,y) a punto (x2,y2), rectángulo ancho x desde punto (x,y) a punto (x2,y2), etc) pero en el primer tuto, creo que no es viable guardar cada punto que se dibuja.

¿Hay alguna manera de guardar lo dibujado según el 1er tuto?

Gracias y felices fiestas a todos :cool:

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Dic 2009 12:13 pm
Vale, ha sido postear y empezar a encontrar información en google (ayer no encontraba nada jeje).

Por lo que estoy viendo, en AS2 no hay una manera 'sencilla' de guardar un dibujo "pixel a pixel", y por lo que parece hay que pasar la información a un php que es el que creará p.e. un jpg o similar.
Supongo que esto debe ser por la misma razón que hay que usar un php para escribir en ficheros o comunicarse con una bbdd.
Por ese motivo la cosa se vuelve lenta si la imagen a guardar es mínimamente grande. Yo pretendo trabajar en local, así que espero no tarde mucho.

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Dic 2009 10:56 pm
Hola: :D

Lo q quieres hacer se vuelve mucho mas simple si utilizas MDM Zinc, en la extension "mdm.Image", hay un metodo que te permite hacer capturas a una zona especifica de la pantalla que obviamente controlas con AS, solo necesitas un boton guardar y unas pocas lineas de codigo adicional a tu paint, si nunca has trabajado con zinc, consiguetelo y te guio pas detalladamente.

Espero haberte ayudado
Joren

Por Joren2008

13 de clabLevel



 

Mi Silla

msie7
Citar            
MensajeEscrito el 29 Dic 2009 12:03 am
Hola Joren

¿Eso es como hacer trampas no? jejeje

¿Qué es eso? ¿Es un plugin de pago? ¿alterará el resto del flash?

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2009 01:59 am
MDM Zinc no es "hacer trampa", es un player que extiende las habilidades natalas de Flash permitiendole hacer uso de opciones más avanzadas, aunque SOLO sirve para aplicaciones de escritorio y no Web.

Por ello en tu caso, es la solución ideal, ya que PHP es una solución de servidor, Zinc es una solución de escritorio.

Saludos, Hernán . -

PD. Si es pago . -

Por Hernán

BOFH

6243 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Bastard Operators From Hell Desarrollador de GAIA

--| Cuartel General de .GAIA | --

firefox
Citar            
MensajeEscrito el 29 Dic 2009 02:06 am
jejejeje, ^^ ^^ no no, el Zinc es un programa con el que expandes muchisimo el alcance del actionscript, no altera para nada el Flash, lo que pasa es que tu programas con AS2 y le agregas codigos, metodos y propiedades propias del Zinc, luego exportas tu swf, lo abres con el zinc y este te genera un .exe, leete sobre el programa y veras lo interesante que es, te permite crear archivos, controlar bases de datos, tomar imagenes, insertar navegadores, copiar, borrar archivos del disco, encriptar archivos de texto, son muchas las ventajas que trae utilizar Zinc, eso si, es de pago, pero ps no es un plugin, por fortuna existen los amigos taringueros y los P2P jejeje....

Bueno, como te dije, si te interesa consiguelo y te guio con tu paint

Por Joren2008

13 de clabLevel



 

Mi Silla

msie7
Citar            
MensajeEscrito el 29 Dic 2009 02:49 am
Hola

Ya he conseguido hacerlo con php pero claro, dependo de un server y es lento, además que todo debe estar en el server.
Voy a ver si me bajo el trial+ y pruebo el Zinc. Suena interesante, ya que hay cosas que me interesan (bbdd y encriptación).
El projecto sobre el que trabajo es todo en local.
Pero eso será mañana, es muy tarde aquí y me voy al sobre.
Saludos y gracias

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2009 03:32 am

Por Hernán

BOFH

6243 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Bastard Operators From Hell Desarrollador de GAIA

--| Cuartel General de .GAIA | --

firefox
Citar            
MensajeEscrito el 29 Dic 2009 12:57 pm
Gracias, ¡está de lujo!

Entonces, corrígeme si me equivoco, la idea es que puedo instalar zinc y seguir utilizando flash normalmente, y añadir las cosas de zinc que necesite. Luego, al ser una aplicación de escritorio, con dejar el zinc instalado no hay problema.

Si es así se lo voy a tener que recomendar a un amigo que hace apps tipo kiosko virtual y cosas así jeje
Lástima que la documentación no sea buena, sin eso mal vamos :(

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2009 04:51 pm
Sip, puedes utilizar el flash normalmente, de hecho no lo afecta en lo mas minimo, nisiquiera es que se instalen las clases de zinc en el flash (como hacen muchos componentes), y luego, si despues de compilar tu aplicacion quires desinstalar el zinc, tu paint te seguira funcionando ( ps ya esta compilado con las librerias del zinc), es genial, te da mucha libertad para tus programas, respecto a las bases de datos, yo he utilizado ACCES, el problema es q ps se necesita q el pc donde ejecutes tu programa tenga el acces, pero tambien puedes guardar archivos xml y encriptarlos para hacer tus bases de datos.

Por Joren2008

13 de clabLevel



 

Mi Silla

msie8
Citar            
MensajeEscrito el 29 Dic 2009 04:57 pm
Bueno ya lo estoy bajando...

Yo pretendo usar mysql, por lo que en cualquier caso tendré que instalar mysql en la computadora.
La idea es trabajar en local y, más adelante, currárme el programa para trabajar por internet ocasionalmente, de ahí que quiera encriptar los datos de alguna manera, para que no viajen en plano.

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2009 06:35 pm
Bueno, pues ya he hecho algo en plan rápido.
Posteo todo el código, necesitarán crear 4 botones para cada color y darles los nombres:
azul_btn, verde_btn, amarillo_btn, rojo_btn
y luego crear otros 2 botones para salvar la imagen o borrarla de la ventana, de nombres:
save_btn, clear_btn

El programa captura un cuadro de coordenadas 100,40,300,160 por lo que recomiendo dibujarlo a mano en el editor de flash. Se salva en bmp en el mismo lugar donde tengan el programa.

Código ActionScript :

primeravez=0; //pone el color por defecto en azul

painting = createEmptyMovieClip('painting',1);

theBrush = new Object();

//capturamos solo lo de dentro del cuadro, al hacer clic con el raton
theBrush.onMouseDown = function(){
   if((_xmouse>100 && _xmouse<300) && (_ymouse>40 && _ymouse<160) ){
      isPainting=true;
      painting.moveTo(_xmouse,_ymouse);
      painting.lineTo(_xmouse+1,_ymouse+1);
   }else{
      isPainting = false;
   }
      
}

//capturamos solo lo de dentro del cuadro, aun moviendo el raton
theBrush.onMouseMove = function(){
   if((_xmouse>100 && _xmouse<300) && (_ymouse>40 && _ymouse<160) ){
      if(isPainting){
         painting.lineTo(_xmouse,_ymouse);
      }
   }else{
      isPainting = false;
   }      
}

//si soltamos el raton, dejamos de dibujar
theBrush.onMouseUp = function(){
   isPainting = false;
}
Mouse.addListener(theBrush);

//por defecto color AZUL = 0x0066C
painting.onEnterFrame = function(){
   ranWidth = Math.round((Math.random()*10)+2); //lo grueso de la brocha
   if(primeravez==0){ primeravez++; painting.lineStyle(ranWidth,0x0066CC,100); }
}

clear_btn.onRelease = function(){
   painting.clear();
}

//botones de cambio de colores
//ROJO:      #660000
//VERDE:   #006600
//AMARILLO:   #CCFF00
rojo_btn.onRelease = function(){
   painting.lineStyle(ranWidth,0x660000,100);
}
verde_btn.onRelease = function(){
   painting.lineStyle(ranWidth,0x006600,100);
}
amarillo_btn.onRelease = function(){
   painting.lineStyle(ranWidth,0xCCFF00,100);
}
azul_btn.onRelease = function(){
   painting.lineStyle(ranWidth,0x0066C,100);
}

//SALVAR IMAGEN MANUALMENTE
save_btn.onRelease = function (){

mdm.Image.ScreenCapture.movieAreaToBmp(100, 40, 200, 120, "myScreenshot.bmp");

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2009 06:37 pm
vaya, se me escapó un ' } ' al final del programa, póngalo o dará error.

la única diferencia con el flash normal es la orden

mdm.Image.Screencapture.movieAreaToBmp

que es un comando de Zinc. Hay que marcar al compilar con zinc la extensión "Image" y poco más.

Por daniel69

76 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Dic 2009 01:52 am
Como tip, yo generalmente prefiero usar un servidor remoto para las bases de datos, así no tengo que convertir la PC en server y además puedo usar paths de red, ergo puedo usar un solo server para nutrir a muchas PC de lo mismo.

Saludos, Hernán . -

Por Hernán

BOFH

6243 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Bastard Operators From Hell Desarrollador de GAIA

--| Cuartel General de .GAIA | --

firefox
Citar            
MensajeEscrito el 30 Dic 2009 10:16 am
Hola Hernan

Eres un crack, yo no necesito tanto jejeje de momento me basta con 1pc pero me gustaría hacer mi projecto para 3 pc's, 2 terminales y 1 server, pero para empezar lo meteré todo dentro de 1 solo

Por daniel69

76 de clabLevel



 

firefox

   Página 1 de 1

 

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