elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Contar los frames en que se presiona una tecla, *2 si son 2, etc.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar los frames en que se presiona una tecla, *2 si son 2, etc.  (Leído 534 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.225


Superhacker (es broma xD )


Ver Perfil
Contar los frames en que se presiona una tecla, *2 si son 2, etc.
« en: 9 Marzo 2024, 00:15 am »

El problema es que, tal como lo programé, se deja de contar cuando se detecta que se dejó de presionar una tecla, así que si hay otra presionándose no la cuenta, o más o menos es lo que pasa:
Caso A: Presiono "A" y no la suelto, presiono "S" y no la suelto, suelto "A", deja de contar, luego reempieza.
Caso B: Presiono "A" y no la suelto, presiono "S" y no la suelto, suelto "S", deja de contar.

Quiero que el programa detecte cuántas teclas se están presionando, que cuente todas las presiones por frame en una misma variable (si hay 2 teclas presionándose, debe aumentar 2, por ejemplo), y que al soltar una deje de contar esa, no las demás. ¿Cómo puedo hacer?

Ah, importante: En el programa se distingue una presión, de los frames presionándose, es decir, si una tecla se presiona, eso cuenta como "Clac", presiones, pero la cantidad de clacs sólo aumenta si se suelta y se vuelve a presionar, en cambio "FramesClaqueando" aumenta en cada frame si se está presionando una tecla. Básicamente lo que me interesa es eso último, lo demás está bien. Miren lo relativo a Claqueando:
Código
  1. onClipEvent (load) {
  2. Moviendose = "No";
  3. Cliqueando = "No";
  4. Claqueando = "No";
  5. ActualXMouse = _level0._xmouse;
  6. ActualYMouse = _level0._ymouse;
  7. }
  8. onClipEvent (enterFrame) {
  9. // Frames:
  10. _level0.Frames = _level0.Frames+1;
  11. // Movimiento:
  12. // Si el mouse se movió:
  13. if (ActualXMouse != _level0._xmouse or ActualYMouse != _level0._ymouse) {
  14. _level0.FramesMoviendose = _level0.FramesMoviendose+1;
  15. // Si el mouse estaba quieto:
  16. if (Moviendose == "No") {
  17. Moviendose = "Sí";
  18. _level0.Movimientos = _level0.Movimientos+1;
  19. }
  20. } else if (Moviendose == "Sí") {
  21. // No se movió pero estaba moviéndose:
  22. Moviendose = "No";
  23. _level0.Frenadas = _level0.Frenadas+1;
  24. }
  25. ActualXMouse = _level0._xmouse;
  26. ActualYMouse = _level0._ymouse;
  27. // FramesCliqueando:
  28. if (Cliqueando == "Sí") {
  29. _level0.FramesCliqueando = _level0.FramesCliqueando+1;
  30. }
  31. // FramesClaqueando:
  32. if (Claqueando == "Sí") {
  33. _level0.FramesClaqueando = _level0.FramesClaqueando+1;
  34. }
  35. }
  36. onClipEvent (mouseDown) {
  37. Cliqueando = "Sí";
  38. _level0.Clics = _level0.Clics+1;
  39. }
  40. onClipEvent (mouseUp) {
  41. Cliqueando = "No";
  42. _level0.Desclics = _level0.Desclics+1;
  43. }
  44. onClipEvent (keyDown) {
  45. if (Claqueando == "No") {
  46. Claqueando = "Sí";
  47. _level0.Clacs = _level0.Clacs+1;
  48. }
  49. }
  50. onClipEvent (keyUp) {
  51. if (Claqueando == "Sí") {
  52. Claqueando = "No";
  53. _level0.Desclacs = _level0.Desclacs+1;
  54. }
  55. }


En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.225


Superhacker (es broma xD )


Ver Perfil
Re: Contar los frames en que se presiona una tecla, *2 si son 2, etc.
« Respuesta #1 en: 11 Marzo 2024, 14:09 pm »

Se me ocurre algo como:
Código:
Si se soltó una tecla:
  Quitarla de la lista.
  Presionándose--
fin
Si se presionó una tecla distinta a las que estaban presionándose:
  Agregarla en la lista.
  Presionándose++
  Actualizar conteos usando Presionándose.
fin

Pero hay varios obstáculos:
1- ¿Cómo el programa obtendría cual se dejó de presionar? Creo que en Flash sólo se mira si la última presionándose sigue presionándose. ¿Debería meter ifs o swtichs para cada tecla posible? ¿un while variando los ifs según la lista?
2- ¿Cómo quito fácil cosas de una lista? Tendré que usar arrays supongo, yo solía usar variables, por ejemplo: Elemento1, Elemento2, etc. Si debo borrar un elemento debería correr hacia atrás a los demás, bah en este caso el orden no importa así que puedo poner el último elemento en el lugar que se borró y luego eliminar al último y actualizar la variable que marca cuántos son.

Creo que es un problema muy específico de Flash. Y quizá demasiado complicado considerando lo poco útil que me es esto, m... Lo intento a ver qué pasa.

Paso 1: Lograr que se agreguen elementos a la lista cuando corresponde.
Paso 2: Lograr que se quiten cuando corresponde.

Digo que el 2 será el más complicado.

m, en cuanto al 1 debo ver si la tecla está en la lista o no.

Pero veo que los clacs se cuentan sólo si no se estaba presionando una tecla, ahora deberán contarse sólo si... ¿la tecla específica no estaba presionándose? Creo que lo puedo hacer, guardando en una variable cual fue la última y cual es la nueva, entonces sólo se contaría si son distintas y se actualizaría la última.

En principio intento el paso 1.

Por ahora hice esto:
Código
  1. onClipEvent (keyDown) {
  2. if (Claqueando == "No") {
  3. Claqueando = "Sí";
  4. _level0.Clacs = _level0.Clacs+1;
  5. }
  6. TeclaPresionandose1 = Key.getCode();
  7. }
Eso guarda la última tecla en lo que sería el 1er elemento de la lista. Es claro que debo crear un nuevo elemento cada vez que se presione una tecla distinta. Pensaré en eso ¿ideas?


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines