Hola a todos, soy nuevo usando Bennu y me esta cayendo bastante bien, felicitaciones.
Bueno tengo una duda piadosa, a la hora de chequear los eventos del teclado, como el de un cursor.
Cuando chequeamos si key(_up) se presionó y hacemos el movimiento que debe hacer el cursor, lo hace todo seguido, no hace una pausa, a ver si me explico.
Queriendo hacer que por cada vez que se presione key(_up) haga cursor.y = cursor.y - 20;
Sabiendo que es un cursor, la idea es que se apriete la tecla de arriba, y espere a que vuelvas a teclearla de nuevo para moverse otros 20px en Y.
Dejandolo asi, al dejar un momento bastante corto apretada la tecla, hace todo de recorrido
Probe con frame(2000); por ejemplo, para que se demore aunque sea cuando se presione la tecla y no haga todo de corrido, funciona.
Pero mi pregunta es, es la manera mas eficiente y correcta de hacerlo?
Gracias por leer!
			
			
			
				Welcome to your DOOM!
(http://farm1.static.flickr.com/172/375444707_310f142f46.jpg?v=0)
			
			
			
				No me queda claro si quieres hacer que solo se mueve cada vez que pulses (que llamaré BLOQUEO), o también dejándolo pulsado pero más lento (que llamaré RALENTIZACIÓN).
La primera forma de BLOQUEO te puede ser útil, pero también puede darte quebraderos de cabeza si haces cosas complicadas:
[code language="bennu"]
LOOP
    ...
    IF(key(_up))
        y-=20;
        WHILE (key_up)) // Mientras no la sueltes
            FRAME;
        END
    END
    ....
    FRAME;
END
[/code]
Y la segunda opción de BLOQUEO (posiblemente yo haría esta, pese a tener una variable más)
[code language="bennu"]
PRIVATE
    int pulsando_arriba;
BEGIN
...
pulsando_arriba = 0;
LOOP
    ...
    IF(key(_up))
        IF(pulsando_arriba == 0)
            pulsando_arriba = 1;
            y -= 20;
        END
    ELSE
        pulsando_arriba = 0;
    END
    ...
    FRAME;
END
[/code]
Y también te dejo una forma para la opción de RALENTIZACIÓN (cambia el valor 50 por el que te convenga):
[code language="bennu"]
PRIVATE
    int contador_arriba;
BEGIN
    contador_arriba = 50;
    LOOP
        IF(key(_up) AND contador_arriba == 50)
            contador_arriba=0;
            y-=20;
        END
        contador_arriba++;
        IF(contador_arriba==51) // No pasarse de 50
            contador_arriba = 50;
        END
        FRAME;
    END
END
[/code]
			
			
			
				Justo lo que buscaba.
Muchas gracias grisendo!  ;D
			
			
			
				bienvenido!
			
			
			
				Gracias Splinter!  :D
			
			
			
				MAS, MAS. Al fondo hay sitio.  ;D
Bienvenido.
			
			
			
				bienvenido a estos lares FPintaluba.
			
			
			
				Gracias!  :D