Hola!

Me estaba planteando hacer un juego para que los niños pudieran dibujar con los dedos en Android, pero no tengo claro como hacerlo con el GM
Lo único que se me ocurre es hacer sprites con circulos pintados de diferentes medidas y colores y que al pulsar (left button) se pinte un sprite en ese sitio.

¿Hay alguna forma menos brusca de hacerlo?

Un saludo!

Aquí dejo un ejemplo (que no terminé) para dibujar con GM, sólo se puede dibujar con una línea de color rojo. Utilicé una "surface" porque estaba aprendiendo a utilizarlas, pero también se podría hacer sin eso. Espero que te sirva.

yo la unica forma que pude hacer que algo se crea tipo asi fue crando un objeto y ese objeto se vaya creando mientras el gato se moovia, era para que un gato deje rastro de arcoiris

Hola!

Ya probé lo del objeto, pero va muy lento y queda horrible si arrastro el raton

Perdonad mi ignorancia pero.. como se abre el gmz?

Cita de: DaiGoN en Julio 02, 2014, 07:16:36 PM
Perdonad mi ignorancia pero.. como se abre el gmz?

usando la opción "importar", desde el menú archivo o desde la pestaña importar en la ventana de bienvenida

Gracias por la info Penumbra!

Clamud creo que has acertado de pleno! muchas gracias por el ejemplo!!
Hay que refinarlo pero creo que puede funcionar bien

Por cierto, por si os sirve...

draw_line_width(mxp,myp,mx,my,global.grosorPincel);

Esto dibuja una linea, pero a escala grande y sobretodo al cambiar de dirección aparecen cruces en vez de lineas :-[

No se corrige completamente pero con esto aparecen lineas mejor definidas:

Citardraw_line_width(mxp,myp,mx,my,global.grosorPincel);
    draw_circle(mouse_x, mouse_y, global.grosorPincel, false);

PD: dejo el post abierto, porque tengo la impresión que con esto me van a surgir bastantes dudas... pero me gusta la idea :D

Un saludo!

#6 Julio 02, 2014, 08:43:27 PM Ultima modificación: Julio 02, 2014, 08:52:48 PM por DaiGoN
Bueno... primera duda >.<
Si puedo pintar así, como puedo "borrar"?

Con draw_clear_alpha o con draw_set_alpha(0) se elimina todo y no veo ninguno que valga

Hay alguna especie de draw_line_alpha?

Edito: con el color del fondo en una variable global me sirve para pintar encima con el color del fondo, que en definitiva... es borrar jeje

Hola a todos CLAMUD y a todos los que dia a dia estan en la comunidad, sin el uso de surface, y sin crear instancias, cuales son los comandos que funcionan???

podrías usar el color del fondo para borrar no? :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Hay varias opciones para dibujar:

Una es guardar los puntos en una "path" y usar la función draw_path. El problema es que hay un límite segmentos que pueden dibujarse con esa función, la función es lenta y sólo se puede dibujar con un grosor. En la red hay algunos scripts que permiten dibujar una path con diferentes grosores, aun así, este es el método menos recomendable.

Puedes usar el mismo método mostrado en este hilo, y en lugar de usar una "surface" desactiva el dibujo del background, así todo lo que es dibujado (en el evento Draw) se mantiene hasta que se cierra el juego. El problema es que esto puede complicar el dibujo de una interfaz con menús y botones. Se puede cambiar el color de fondo si al iniciar la room se dibuja un rectángulo abarcando toda la pantalla.

También es posible dibujar líneas con "anti-alias", el método más rápido es dibujar un sprite deformado (como se muestra en este enlace: http://gmc.yoyogames.com/index.php?showtopic=376776). Una vez encontré un ejemplo que dibujaba figuras con anti-alias con puro código, pero no recuerdo dónde, el resultado era mejor, sin embargo, el código era muy lento.

Y para borrar:

Se puede dibujar el mismo color de fondo, pero si es necesario mantener la transparencia, entonces se debe usar una surface y para borrar se debe cambiar el método de mezcla (blend mode), de modo que el canal alfa se haga cero en los pixeles requeridos. Esto también se podría hacer con un shader que inserte un color con alfa igual a cero.

Gracias Clamud te comento solucione el problema con draw_line_width y draw_circle y las variable xstart e ystart