Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: AgenteDelPanico en Septiembre 18, 2012, 03:00:47 AM

Título: como puedo arrastrar un objeto?
Publicado por: AgenteDelPanico en Septiembre 18, 2012, 03:00:47 AM
Hola alguien sabe como puedo hacer para arrastrar un objeto con el mouse? que al clickar y mantener el click pueda cambiar de sitio un objeto y al soltar el click pues se quede quieto?
Título: Re:como puedo arrastrar un objeto?
Publicado por: WeGame en Septiembre 18, 2012, 03:41:59 PM
En un evento left pressed, coloca el evento "jump to position" y escribe:
en la casilla "x": mouse.x
en la casilla "y": mouse.y
o mouse_x, mouse_y, no recuerdo bien si era punto o barra baja  :-\

saludos ;)
Título: Re:como puedo arrastrar un objeto?
Publicado por: Silver_light en Septiembre 18, 2012, 03:57:46 PM
Cita de: WeGame en Septiembre 18, 2012, 03:41:59 PM
En un evento left pressed, coloca el evento "jump to position" y escribe:
en la casilla "x": mouse.x
en la casilla "y": mouse.y
o mouse_x, mouse_y, no recuerdo bien si era punto o barra baja  :-\

saludos ;)
Es de hecho mouse_x y mouse_y.
El inconveniente que plantea esa solución es la siguiente: Solo se ejecutaría para cuando el mouse haga click en la instancia y no en todo el tiempo que lo mantuviera presionado. En ese caso, usaría Left Button, pero este también trae otro inconveniente: que solo se ejecutaría si la instancia siguiera debajo del cursor. Generalmente la velocidad con la que el se mueve la instancia hacia las coordenadas x,y del Mouse es lenta, por lo que la instancia suele quedarse en el camino, por así decirlo, y al quedarse en e camino, dejaría de ejecutarse Left Button, puesto que no estaría debajo del cursor.

Yo propongo otra solución:
Utilizar una variable que indique si está siendo arrastrado, por ejemplo:
Evento create:
[GML]
arrastrar = false;
[/GML]
Luego en el evento Left Pressed, la volvemos verdadera, porque le hicimos click encima;
[GML]
arrastrar = true;
[/GML]
Luego en el evento Step evaluamos si estamos arrastrando el objeto:
[GML]
if (arrastrar)
{
x = mouse_x;
y = mouse_y;
}
[/GML]
Y finalmente cuando dejemos de hacer click, el objeto dejará de seguir el mouse (o ser arrastrado)
Evento Global Left Released:
[GML]
arrastrar = false;
[/GML]

Adjunto un ejemplo, por si las dudas...
Saludos! :)
Título: Re:como puedo arrastrar un objeto?
Publicado por: pikamaker en Septiembre 19, 2012, 02:17:21 AM
esto ya se habia preguntado, dejo el link del post antiguo
http://www.comunidadgm.org/index.php?topic=11038.msg51397#msg51397
que tiene un ejemplo de @soccer2008