Septiembre 18, 2012, 03:00:47 AM Ultima modificación: Septiembre 18, 2012, 03:28:36 AM por AgenteDelPanico
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?

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 ;)
http://birfa.net16.net
Mi web de juegos y otros.

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! :)

#3 Septiembre 19, 2012, 02:17:21 AM Ultima modificación: Septiembre 19, 2012, 02:19:00 AM por pikamaker
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