|
321
|
Programación / Programación General / Re: Contar tiempo en que se presionan teclas pero...
|
en: 2 Septiembre 2024, 08:51 am
|
Hice un código que, por lo que vi, anda bien, pero algunos nombres son un entrevero bárbaro, me refiero a la parte de: onClipEvent (enterFrame) { // Relativo a Clacs: ¿se les ocurre cómo los podría simplificar? Eso ayudaría a ver si funciona bien o no: onClipEvent (load) { // Para saber si el mouse se movió: ActualXMouse = _level0._xmouse; ActualYMouse = _level0._ymouse; // Para saber si FramesMoviendoseC debe aumentar: Moviendose = "No"; // Para determinar qué pantalla mostrar: PantallaActual = 1; TiempodePantalla = 333; } // Clics: onClipEvent (mouseDown) { _level0.ClicsC++; // Para saber si FramesCliqueandoC debe aumentar // (si al cambiar el frame es Recién, cambia a Sí y empieza... // a aumentar. Se detiene cuando cambia a No, al descliquear). Cliqueando = "Recién"; } onClipEvent (mouseUp) { _level0.DesclicsC++; // Para que FramesCliqueandoC ya no aumente: Cliqueando = "No"; } // Teclas: onClipEvent (keyDown) { // Clacs sólo debe aumentar si ocurre un clac, no si se mantiene: // Si la tecla presionándose no está indicada como tal: if (eval("Tecla"+Key.getCode()+"PresionandoseDeAntes") == undefined && eval("Tecla"+Key.getCode()+"RecienPresionandose") == undefined) { // Indicarla: // trace("Se presionó la tecla: "+Key.getCode()); set ("Tecla"+Key.getCode()+"RecienPresionandose", "S"); trace("Tecla"+Key.getCode()+"RecienPresionandose: "+eval("Tecla"+Key.getCode()+"RecienPresionandose")); _level0.ClacsC++; // Para más adelante saber qué tecla se soltó, // y cuánto debe aumentar FramesClaqueandoXC: TeclasRecienPresionandose++; // Esto es para saber cual eliminar cuando deje de presionarse: set ("TeclaRecienPressedNro"+TeclasRecienPresionandose, Key.getCode()); trace("TeclaRecienPressedNro"+TeclasRecienPresionandose+": "+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)); } } onClipEvent (keyUp) { // Se quitará la tecla ya no presionada: // Para saber cual es se revisarán 2 listas: // La de TeclaPressedDeAntes y la de TeclaRecienPressed: // TeclaPressedDeAntes: Puntero = 0; // Para saber si debe revisarse la siguiente lista o no: Deleted = "No"; while (Puntero<TeclasPresionandoseDeAntes) { Puntero = Puntero+1; if (Key.isDown(eval("TeclaPressedDeAntesNro"+Puntero))) { // trace("La tecla "+eval("TeclaPressedDeAntesNro"+Puntero)+" aún está presionada."); } else { // La tecla guardada como presionándose de antes nro (puntero), // ya no está presionándose: Quitar la asignación: // ¿Debo indicar que sólo si existe? trace("La tecla "+eval("TeclaPressedDeAntesNro"+Puntero)+" no está presionada."); trace("Se elimina."); delete eval("Tecla"+eval("TeclaPressedDeAntesNro"+Puntero)+"PresionandoseDeAntes"); // _level0.DesclacsC++; // Eliminar tecla de la lista de presionándose: delete eval("TeclaPressedDeAntesNro"+Puntero); // Reordenar lista si es necesario: Puntero2 = Puntero; while (Puntero2<TeclasPresionandoseDeAntes) { set ("TeclaPressedDeAntesNro"+Puntero2, eval("TeclaPressedDeAntesNro"+(Puntero2+1))); Puntero2 = Puntero2+1; } // Borrar la última tecla de la lista (fue movida a antes): delete eval("TeclaPressedDeAntesNro"+Puntero2); TeclasPresionandoseDeAntes--; // Para que el loop termine ahora: Puntero = TeclasPresionandoseDeAntes; Deleted = "Sí"; // TeclasSoltadasEnEsteFrame++; } } if (Deleted == "No") { // TeclaRecienPressed: Puntero = 0; while (Puntero<TeclasRecienPresionandose) { Puntero = Puntero+1; if (Key.isDown(eval("TeclaRecienPressedNro"+Puntero))) { // trace("La tecla "+eval("TeclaRecienPressedNro"+Puntero)+" aún está presionada."); } else { // La tecla guardada como presionándose de antes nro (puntero), // ya no está presionándose: Quitar la asignación: // ¿Debo indicar que sólo si existe? trace("La tecla "+eval("TeclaRecienPressedNro"+Puntero)+" no está presionada."); trace("Se elimina."); delete eval("Tecla"+eval("TeclaRecienPressedNro"+Puntero)+"RecienPresionandose"); // _level0.DesclacsC++; // Eliminar tecla de la lista de presionándose: delete eval("TeclaRecienPressedNro"+Puntero); // Reordenar lista si es necesario: Puntero2 = Puntero; while (Puntero2<TeclasRecienPresionandose) { set ("TeclaRecienPressedNro"+Puntero2, eval("TeclaRecienPressedNro"+(Puntero2+1))); Puntero2 = Puntero2+1; } // Borrar la última tecla de la lista (fue movida a antes): delete eval("TeclaRecienPressedNro"+Puntero2); TeclasRecienPresionandose--; // Para que el loop termine ahora: Puntero = TeclasRecienPresionandose; // TeclasSoltadasEnEsteFrame++; } } } // Desclaqueando = "Sí"; } onClipEvent (enterFrame) { // Relativo a Frames: _level0.Frames = _level0.Frames+1; // Relativo al Movimiento del Mouse: // Si se movió: if (ActualXMouse != _level0._xmouse or ActualYMouse != _level0._ymouse) { // Si estaba quieto: if (Moviendose == "No") { _level0.MovimientosC++; Moviendose = "Sí"; } else { _level0.FramesMoviendoseC++; } } else if (Moviendose == "Sí") { // No se movió pero estaba moviéndose: Moviendose = "No"; _level0.FrenadasC++; } ActualXMouse = _level0._xmouse; ActualYMouse = _level0._ymouse; // Relativo a Clics: if (Cliqueando == "Sí") { _level0.FramesCliqueandoC++; } else if (Cliqueando == "Recién") { Cliqueando = "Sí"; } // Relativo a Clacs: if (TeclasPresionandoseDeAntes > 0) { _level0.FramesClaqueando1C++; _level0.FramesClaqueandoXC = _level0.FramesClaqueandoXC+TeclasPresionandoseDeAntes; trace ("TeclasPresionandoseDeAntes: "+TeclasPresionandoseDeAntes); } // Las recién presionadas pasarán a ser de antes: while (TeclasRecienPresionandose > 0) { trace("Las recién presionadas pasarán a ser de antes"); TeclasPresionandoseDeAntes++; // Agregarlas a la lista de TeclaPressedDeAntes: set ("TeclaPressedDeAntesNro"+TeclasPresionandoseDeAntes, eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)); trace("La tecla "+eval("TeclaPressedDeAntesNro"+TeclasPresionandoseDeAntes)+" se agregó a la lista en TeclaPressedDeAntesNro"+TeclasPresionandoseDeAntes); trace("TeclaPressedDeAntesNro"+TeclasPresionandoseDeAntes+": "+eval("TeclaPressedDeAntesNro"+TeclasPresionandoseDeAntes)); // Agregarlas a la otra lista, en que se les asigna S: set ("Tecla"+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)+"PresionandoseDeAntes", "S"); trace("La tecla "+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)+" quedó indicada como presionada en "+"Tecla"+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)+"PresionandoseDeAntes"); trace("Tecla"+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)+"PresionandoseDeAntes: "+eval("Tecla"+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)+"PresionandoseDeAntes")); // Eliminarlas de la lista de recientes: delete eval("Tecla"+eval("TeclaRecienPressedNro"+TeclasRecienPresionandose)+"RecienPresionandose"); // Eliminar tecla de la lista de presionándose: delete eval("TeclaRecienPressedNro"+TeclasRecienPresionandose); TeclasRecienPresionandose--; } // Relativo a cambiar pantalla: TiempodePantalla--; if (TiempodePantalla == 0) { TiempodePantalla = 333; if (PantallaActual == 1) { PantallaActual = 2; } else { PantallaActual = 1; } _level0.gotoAndStop(PantallaActual+3); } }
Seguiré pensando. Entiendo que si no explico el código es más difícil que puedan ayudarme, pero es que a mí también me cuesta entenderlo. Lo complicado es lo de los clacs, explicaré eso. Un clac es cuando se presiona una tecla, no importa durante cuánto tiempo. Cuando hay un clac, el contador de clacs debe aumentar 1. El problema es que no es tan fácil que el programa sepa que esa tecla presionándose se está presionando de antes, el programa sólo capta si se está presionando o no, si fuese sólo por eso presionar una tecla causaría que el contador Clacs aumente muchas veces. La solución que se me ocurrió es guardarlas en una lista, entonces cuando se capta que hay un clac se mira la lista de teclas y el contador solo aumenta si la tecla no está en la lista. Y la tecla se agrega, sino no. Tampoco hay, que yo sepa, una función que indique o guarde cual fue la última tecla soltada, así que cuando eso ocurre hay que averiguar cual, para eliminarla de la lista. Eso andaba bien también pero con tanto lío de nombres que hice no puedo comprobarlo bien. Cuando hay un desclac, el contador de desclacs aumenta 1. El contador FramesClaqueando1C es sobre cuántos frames estuvo mantenida alguna tecla, no importa cuántas sean durante un mismo frame, es decir, si se mantuvo presionada una tecla durante 5 frames, el contador aumentará 5, y si fueron 2 teclas también aumentará 5. Pero yo quise que aumente a partir del 2ndo frame, porque sino, en realidad no habría pasado 1 frame, podría ser 1/2 frame, pasa un frame cuando hay cierta diferenc¡a de tiempo entre un frame y otro, pero el clac está en medio, así que al llegar el siguiente frame el tiempo normal aún no pasó. Para lograr que aumente a partir del 2ndo frame, hay que ver si alguna tecla estuvo siendo presionada desde el frame anterior, pero sólo hay una lista de presionadas, no se sabe si son del frame anterior o no. Bueno, para mejorar eso, cuando hay un clac la tecla se agrega una lista de recién presionadas, y durante un nuevo frame las de esa lista se pasan a otra de teclas presionadas de antes. Pero son 4 listas en vez de 2, porque... Cuando hay un clac, hay que ver si la tecla estaba presionada. Para eso se guarda así: TeclaXRecienPresionandose = "S" donde X es el código ACII o como se llame. Así cuando se presiona la tecla se mira si esa variable existe ("S") o no (undefined) y no hay que revisar listas. Cuando hay un desclac, hay que ver cual tecla se soltó. Como dije no conozco si hay un indicador de la última tecla soltada, así que no hay X, no puedo decir "borra la variable TeclaXRecienPresionandose", no sé X. Para averiguarla el programa debe mirar otra lista, en que las variables son así: TeclaRecienPressedNro1 = 38 donde ese 1 es la posición en la lista y el 38 es la tecla presionada que se mira a ver si es igual a X. Esa lista tiene las teclas presionadas. La hago con variables en vez de arrays, no viene mucho al caso. Las otras 2 listas son del mismo estilo pero con otros nombres, y son para otra cosa como su nombre indica: Tecla38PresionandoseDeAntes TeclaPressedDeAntesNro1 ¿Podría hacer 2 listas en vez de 4? Lo pensaré. Por último está FramesClaqueandoXC, que es como FramesClaqueando1C pero este tiene en cuenta cuántas teclas han estado presionadas, así que puede aumentar más de 1 a la vez. La cantidad está marcada por TeclasPresionandoseDeAntes. El lío de los nombres me resulta difícil explicarlo y ya fue bastante cansador explicar todo esto así que será en otra ocasión, pero por ejemplo como algunas variables empiezan con Tecla y otra con Teclas me entrevero, parece una sopa de letras por momentos.
|
|
|
322
|
Foros Generales / Dudas Generales / Re: DVDs VS Pendrives, dudas.
|
en: 2 Septiembre 2024, 02:14 am
|
Aclaro que el Pendrive me vino con unos 57GB no con 64  Siguen siendo más baratos los DVDs entonces, salvo quizá comprando un Pendrive de 128, si vale menos del doble. Supongo que tiene archivos ocultos que no he podido ver. Otra cosa es que pensé que luego de Agosto venía Octubre  Nunca fui hábil memorizando el orden de los meses y además tengo Octubre en mente porque son las votaciones aquí. La cosa es que no faltaba tanto para que ciertas casas empiecen a vender DVDs. Igual supongo que seguiré usando Pendrives.
|
|
|
323
|
Foros Generales / Dudas Generales / Re: Ahora los usuarios de este foro
|
en: 2 Septiembre 2024, 01:25 am
|
Esto iría en preguntas sobre el foro me parece.
Quizá un conocido suyo o un hacker usó su PC sin su permiso.
Quizá lo has inventado.
Dice que es el único conocido, lo que significa que pudo ser él o alguien que no está registrado, o alguien que sí pero que usó otra PC, otra IP o lo que sea, que sólo coincide con la del usuario en cuestión.
Yo no conozco mucho a ese usuario pero no parece del tipo que ande haciendo tonterías como querer entrar en cuentas ajenas, encima de un recién registrado que tampoco parece malo (por ahora). Quizá tuvo algún problema contigo usando él otro nick, por eso no sabes quién es. Otro punto es que como tu nick parece tan poco elaborado, o sea, como si no fueras a participar mucho, como si no te importara, y como si escribieras cosas tan simples, quizá por eso a alguien le pareció que tenías un password simple también y de paso no le impotó joderte porque como digo tú no parece que te hayas preocupado mucho por tener una cuenta, un nick, más o menos respetable digamos. Tampoco te has puesto un avatar, en fin, no son cosas necesarias, sólo estoy teorizando sobre por qué te ocurrió a ti pero claro que le puede ocurrir a cualquiera, ya se ha hablado de que algunos han recibido emails donde decían que debían resetear el password y eran truchos, incluso el mismo admin lo comentó.
Suerte.
|
|
|
325
|
Media / Multimedia / Re: Busco explicación sobre resolución al grabar videos.
|
en: 1 Septiembre 2024, 03:28 am
|
Configuración del grabador:  Si la configuración del emulador es así:  entonces en pantalla completa se ve así:  y en el video grabado se ve así (normal):  Si en cambio configuro el emulador así:  (sólo cambié la resolución) entonces en pantalla completa se ve así:  es decir, el borde, la parte negra, ocupa menos espacio, la pantalla del juego al expandirse se ve un poco más grande que con la otra configuración, me gusta más así, esta configuración, pantalla más grande. La imagen es más chica que la anterior, sí, es como salió al tomarle foto, pero esa imagen se estira y el % que ocupa la parte negra es menor que en la otra. Prueba ver las imágenes en el mismo tamaño y lo verás. pero el video grabado se ve así:  es decir chiquito, no me gusta. En lo único que puedo aconsejarte actualmente es que uses otro formato de captura de video que no sea ese dinosaurio de windows media video, y windows media audio. El otro disponible es AVI y no recuerdo qué problema tenía, quizá no lo podía editar con el editor que tengo, aunque ahora los grabo de modo que no preciso editarlos. ¿Me recomiendas el AVI? y el codec pues dependerá de los que tenga disponibles tu sistema. Si pones la lista pues te podremos aconsejar. Dice Window media video 9 o 8, puse la 9 que es la más reciente supuse... No hay otras opciones. Y por ultimo ahora que según tengo entendido as formateado el sistema operativo Nop, sólo me cambiaron las RAM. En unos días los pruebo, pero tengo Windows 7 y 2GB de RAM, muchos de los programas que intenté usar no se podían instalar o funcionaban muy lento, me aburrí de descargar, instalar, desinstalar, incluso uno por uno si mal no recuerdo tuve que volver a la configuración anterior de Windows porque dejó de funcionar Windows. Debes de considerar la resolución del Emulador en pantalla completa, por ejemplo si quieres grabar a 640x480 debes ir a tu emulador > Option > Graphics y revisar que en Full Screen - Resolution tenga esos 640x480. Lo que pasará es que cuando pongas a pantalla completa tu emulador cambiará la resolución de pantalla a esos 640x480 y se extenderá en él. Ok, pero ¿viste los bordes negros que le mostré a Goku? ¿por qué será que en un caso son más grandes? La proporción de la pantalla es la misma creo. 1024 - 768 640 - 480 Calculé el 480 usando regla de 3 y coincide con la opción. La resolución (resolution) que ves acá: (imagen) Sirve para cambiar el tamaño del video luego de ser capturado, así que no te sirve porque aparte de perder calidad si tiene que redimensionar sería inútil ya que siempre es mejor hacer la captura en la resolución real (640x480) y dejarlo así. Acá recomiendo que le pongas en Native Resolution para que lo deje como está originalmente Pruebo. Lo de la calidad, es que, no me interesa taaanta calidad, los videos son pesaditos de por sí si son largos... las medidas de captura son las que te pide especificar cuando le das al botón de Start Recording, al presionar ese botón debes mover el área de captura a la esquina superior izquierda de la pantalla porque cuando hay cambio de resolución esta se corta desde la esquina inferior derecha.
Acá puedes ver como yo lo he situado todo lo posible en la esquina superior izquierda y la resolución la he ajustado a 640x480
(imagen)
Entonces grabas y/o pones tu emulador a pantalla completa y debe de grabar bien Buen dato pero... mira el inicio de mi video: https://www.youtube.com/watch?v=K16ZliACPlkEsa presentación es un exe de flash en pantalla completa, no es necesaria, ni que sea un exe, pero algo quiero poner ¿tendría que ser en el espacio chiquito? ¿en el video se vería más grande? También es medio lioso que quede centrado xD - Por otro lado 60fps es algo alto para un juego antiguo emulado, esos juegos dudo que pasen los 15fps XD, pero ya depende de ti hacer las pruebas y ajustar la configuración para aligerar más el proceso de captura Eso quedó de cuando grabé uno de Playstation que iba a 60 fps, pero acabo de reconfirmar que los de NES me van a esa velocidad también.
|
|
|
326
|
Programación / Programación General / Mostrar en pantalla números cada vez más largos, de todo tipo e intercalando.
|
en: 31 Agosto 2024, 07:10 am
|
Positivos, negativos y decimales. El - y el . cuentan en lo largo. Al principio debería mostrar 0, 1, 2, y así hasta 9. Números de largo 1. Luego -1, 10, -2, 11... y así, son de largo 2 y se van intercalando, me refiero a que no se muestra 1ero todos los negativos de largo 2 y luego todos los positivos de largo 2, sino que muestra un negativo de largo 2, luego un positivo de largo 2, y se repite eso hasta que no hayan de largo 2. Luego 0.1, -10, 100, 0.2, -11, 101... la idea es la misma. Luego 0.01, -0.1, 10.1, -100, 1000... creo que son 5 tipos, la idea es la misma. Los que tienen más decimales van 1ero, si 2 tipos tienen igual cantidad va el negativo 1ero. Probablemente se me está escapando algo pero más o menos es eso. Lo que se me ocurre es algo como: Largo = 1 MaxDecimalesActual = 0 // El último positivo de 0 decimales que se mostró es -1 (digamos): LastPositivode0 = -1 // El último negativo de 0 decimales que se mostró es 0 (digamos): LastNegativode0 = 0 Repetir hasta que el usuario lo indique Decimales = -1 Repetir mientras Decimales < MaxDecimales Decimales++ Divisor = Decimales Resumen = "LastPositivode"+Decimales // Aquí hay que multiplicar y luego dividir para evitar inexactitudes: NuevoNumero = eval(Resumen)+(1/ LargodelNuevoNumero = (obtenerlo) Si LargodelNuevoNumero == Largo // Actualizar el último número de su tipo: set(Resumen, ProximoNumero) mostrar ProximoNumero sino si LargodelNuevoNumero < Largo // NuevoNumero = eval(Resumen)+1 set(Resumen, ProximoNumero)
Hasta ahí llegué por ahora porque al número habría que sumarle en un caso 1, en otro caso 0.1, o 0.01, y así, o restarle, así que el modificador es variable, no me había dado cuenta. Ahora bien, ese código tiene el problema de que estaría haciendo sumas a ver si el número del tipo de turno puede mostrarse, lo cual es poco eficiente. En el mismo loop también se chequearía para el negativo. La cantidad de decimales iría aumentando, se resetearía al llegar al máximo y en ese punto aumentaría el largo. Lo seguiré pensando pero si se les ocurre alguna solución o sugerencia díganme cual.
|
|
|
327
|
Seguridad Informática / Seguridad / Re: Problemas de privacidad
|
en: 30 Agosto 2024, 05:24 am
|
Dudo que esas sean pruebas suficientes. A veces uno se confunde sobre las cosas, piensa que hizo algo y en realidad hizo otra cosa. A mí a veces me pasó que la tecla mayúscula está con o sin luz pero está al revés (escribe minúscula estando activada), algo así podría explicar por qué se acttivó sola, no sé exacto la causa pero no es que otra persona la active. Creo que tendría sentido que busques más pruebas, pero no puedo ayudarte con eso.
A ver si GPT sabe: Las preocupaciones sobre la seguridad y privacidad de la información son válidas, pero es importante considerar distintas posibilidades antes de concluir que alguien tiene acceso remoto a tu computadora. Aquí hay algunas posibles explicaciones y sugerencias sobre cómo recopilar más pruebas:
### Posibles explicaciones alternativas:
1. **Problemas técnicos:** Podrían existir problemas técnicos con tu computadora que estén causando los comportamientos inusuales que has observado, como la tecla "Bloq Mayús" que cambia de estado. Podrían ser errores de software o problemas de hardware.
2. **Malware:** La presencia de malware en tu sistema también podría explicar estos comportamientos extraños, como la modificación de archivos o cambios en la configuración del teclado. Realiza un escaneo completo de tu sistema usando un antivirus confiable.
3. **Configuración automática:** Algunas actualizaciones automáticas de software, cambios en la configuración del sistema operativo o aplicaciones en segundo plano podrían estar causando estos cambios sin tu conocimiento.
### Recopilación de pruebas adicionales:
1. **Registros del sistema:** Revisa los registros del sistema en busca de actividades inusuales. Estos registros pueden proporcionar información sobre qué procesos se están ejecutando y cuándo.
2. **Herramientas de monitoreo:** Utiliza herramientas de monitoreo de red y de sistema para identificar cualquier tráfico o actividad sospechosa en tu computadora.
3. **Cambios de contraseñas:** Cambia tus contraseñas de forma regular y asegúrate de utilizar contraseñas seguras y únicas para cada cuenta.
4. **Firewall y software de seguridad:** Asegúrate de tener un firewall activo y un software de seguridad confiable instalado en tu computadora para detectar y prevenir posibles intrusiones.
Si todavía tienes dudas sobre la seguridad de tu sistema después de realizar estas verificaciones, considera buscar ayuda de un profesional en seguridad informática para una evaluación más detallada. ¡Espero que esta información te sea útil!
|
|
|
328
|
Foros Generales / Dudas Generales / Re: DVDs VS Pendrives, dudas.
|
en: 29 Agosto 2024, 10:13 am
|
No sabía que los Pendrives estaban tan baratos, conseguí un Kingston nuevo de 64GB por $300 uruguayos, es decir, 300/64 = 150/32 = 75/16 = más o menos $5 por cada GB. El último DVD que compré me costó $37, trajo unos 4GB, 37/4 = más o menos $10 por GB.  Hace años el Pendrive que compré me costó como 200 y sólo trae 8. Por otro lado no entiendo la enorme diferencia de precios que hay en distintos sitios. En algunos de esa misma marca y GB me lo ofrecieron por $1600. Distinto modelo sí ¿por qué habrá tanta diferencia, suponiendo que sea por el modelo? El que conseguí es un Exodia 3.2 DVDs no hay, por eso miré los precios de los Pendrives. Había llamado a muchos sitios, pocos tienen por mayor, uno me dijo que tendría en 2 meses, y la mayoría no tiene.
|
|
|
|
|
|
|