|
471
|
Foros Generales / Foro Libre / Re: ¿Habías oído hablar del protestware?
|
en: 25 Febrero 2024, 23:13 pm
|
No conocía el concepto, leí esto: https://www.enter.co/especiales/dev/que-es-protestware-desarrolladores-saboteando-su-propio-codigo/y me pareció incoherente pero no lo entendí del todo. Si ware puede usarse como final de soft o hard, sustituir esos principios por protest no llega ni a dejar en duda si se refiere a hardware o software, porque al no estar la palabra completa no es algo de eso, es como decir demoprotesta o protescracia, no se puede interpretar como "protesta usando democracia", sí como "protesta usando un demo", "protesta usando a la mayoría", o "protesta usando un sistema de gobierno", no creo que sea lo mismo... Pero existen conceptos o nombres como Freeware, Abandonware, Malware, y todos son software creo, o da igual, son cosas relacionadas con Informática. Protestware tendría sentido que sea "Software hecho para protestar", "Software que se volvió un medio de protesta", e incluso "Protestar con Software", pero dudo que tenga sentido llamar Protestware a borrar o limitar software como medio de protesta (a menos que eso haya sido con software). Una Tomatoprotest podría ser una protesta arrojando tomates (cosa poco ética por cierto, mejor comerlos y arrojar basura), no me parece lógico llamar Tomatoprotest a esconder los tomates, porque no se están usando tomates para protestar, al contrario, aunque sí, bueno xD Ya no le veo el problema. Esconder una cosa es una forma de usar esa cosa. Las palabras así sirven para llamar la atención y para resumir. Si no dices protestware deberías decir "protest using software" y no hay mucha necesidad de eso. No sé si existen palabras como Biciride, Motoride, Carrride, etc, pero también servirían de resumen. Hay muchos resúmenes similares que pueden hacerse. Había olvidado que entiendes el concepto ¿cual es tu queja entonces? Por lo que he visto en otros mensajes tuyos también, parece que crees que sabes suficiente de Informática y haber aportado suficiente como para haberte vuelto más o menos exitoso pero que debido a una conspiración de empresas, políticos y no sé qué más no has tenido éxito. Sabes más que yo probablemente, y más que la mayoría, pero no creo que sea tan simple como que la culpa la tiene una conspiración. Ser exitoso, nos guste o no, depende de hacer cosas que a la gente le gusten, salvo ciertas excepciones en que la vuelves dependiente de lo que haces, o incluso media esclava. Por ejemplo yo no creo que el fútbol sea gran cosa, es casi siempre lo mismo ¿es lógico que la gente pague tanto y se apasione tanto por ver más o menos lo mismo una y otra vez? Creo que no, pero lo hacen, y así los que se dedican al negoci del fútbol son exitosos aunque lo que hagan parezca algo bastante común y corriente, date cuenta que no hacen cosas especiales, eventos donde puedas jugar tú contra los profesionales por ejemplo, o al menos yo no sé de eso, lo que muestran en general son partidos, mi padre escucha sobre fútbol a cada rato y siempre es sobre lo más oficial, en fin, y sin embargo alguien que se esfuerce en mejorar algunas cosas puede que no reciba un peso porque no es apreciado, así es la vida, agradece que no te manden a la hoguera o cosas así como hacían antes. Pero quizá lo que has hecho no sea tan grandioso como crees, no sé de eso, me habías dado un link en que al inicio se veían insultos en mayúscula, no presté mucha atención al resto. Si presentas algo bueno así, creo que espantas antes de que llegue a verse lo bueno. La presentación o exposición es importante. La gente no entiende todo lo mismo que tú, una vez una muchacha me dijo "no me lo tires como si fuese un ladrillo", no des una página que cuesta entenderla, o al menos a mí me costó. El éxito en muchos casos parece cuestión de suerte. Por ejemplo un tío se hizo viral porque cada día subía un video donde mostraba un dibujo de estilo anime, mostrando cómo iba aprendiendo, pero el tipo creo que ya sabía dibujar bien. Supuestamente aprendió muy rápido y además ya era muy conocido, un youtuber que hacía chistes. Pero es como que sólo por esa oavadita de hacer un dibujito al día y mostrarlo ganaba dinero. Yo tengo muchas libretas de muchas hojas llenas y YT no me dió un peso por eso ni me lo darían seguramente aunque las mostrara. Es cuestión de suerte: Si te gusta hacer chistes/dibujitos, ganas, si te gusta entender la realidad, ganarás si logras hacer algo indudablemente útil, sino sólo alégrate de haber avanzado o haber podido intentarlo. Por supuesto habrá gente que se dedica a hacer chistes o dibujar y aún así le va mal (en Japón literalmente los animadores se mueren trabajando), pero me parece que son campos en que es más probable ser apreciado. Si tanto te interesa ser exitoso para estar económicamente normal en vez de estar tan mal como dices estar, podrías intentar hacer cosas que a la gente le guste, aunque a ti no, o buscar algo que guste suficiente a ellos y a ti. También podrías enfocarte en hacer cosas que gusten a la gente rica que querría pagar por lo que haces, porque tener a un montón de fans pobres piratas no sirve de mucho.
|
|
|
472
|
Media / Diseño Gráfico / Re: Quitar cosas de una imagen ¿cómo?
|
en: 25 Febrero 2024, 21:53 pm
|
Los archivos de imagen, video, sonido ¡todos o casi! están escritos en un lenguaje que es difícil de entender por qué lo hicieron tan difícil de entender, no lo entiendo, y ya no tengo mucha esperanza en avanzar en eso, no me meto en eso. No es para un juego sino una autobiografía que incluye imágenes. En cierto punto en el colegio, volví desde el recreo, vi que mi mochila estaba en el suelo y un tipo sentado en el asiento donde la había dejado, y un amigo suyo estaba sentado al lado. Cuando les pregunté qué pasó, el 1ero que comenté me dijo que cuando ellos llegaron estaba así, y el otro se reía. He aquí la representación, por ahora:  Veo que tiene transparencia, yo la pego en Word así que no lo noté, no importa. Vale decir que no sé ni me gusta dibujar, así que es lo que hay, no esperes mucho detalle en las imágenes o que representen fielmente el hecho xD
|
|
|
473
|
Programación / Programación General / ¿Cómo producir variaciones rápidamente?
|
en: 25 Febrero 2024, 06:07 am
|
Hace poco hice un tema similar: https://foro.elhacker.net/programacion_general/iquestcomo_los_numeros_se_producirian_mas_rapido_en_mflash_5-t520859.0.htmlPero este no es tanto sobre Flash, aquél más o menos ya lo resolví. Este código produce dibujos negros y blancos: actions for fotograma 1 PixelesdeLargo = 1; // En el frame 3 se repite: function Variar () { PixelaModificar = "ColordePixel"+Puntero; ColordePixelaModificar = eval(PixelaModificar); // ¿El pixel puede cambiar de color? if (ColordePixelaModificar<1) { // Sí, hacer los cambios: set (PixelaModificar, ColordePixelaModificar+1); Col = new Color("Pixel"+Puntero); Col.setRGB(parseInt(0, 16)); // Para juzgar: ¿El dibujo es repetido? SumadePintados = SumadePintados+1; // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica? if (Puntero/PixelesdeLargo == Math.floor(Puntero/PixelesdeLargo) or Puntero>MinPixelInferior) { // Sí, actualizar SumadePintadosNuevos: SumadePintadosNuevos = SumadePintadosNuevos+1; } // ¿El dibujo tiene píxeles donde no había en una hoja más chica... // y son al menos (PixelesdeLargo) píxeles? if (SumadePintadosNuevos>0 && SumadePintados>MinSumadePintados) { // Sí, hacer dibujo y dar tiempo para verlo: Puntero = MaxPosiciondePuntero; play (); } else { // No, el dibujo es repetido, no mostrarlo y hacer otro: Puntero = MaxPosiciondePuntero; Variar(); } } else { // El pixel no puede cambiar de color, resetearlo: set (PixelaModificar, 0); Col = new Color("Pixel"+Puntero); Col.setRGB(parseInt("FFFFFF", 16)); SumadePintados = SumadePintados-1; // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica? if (Puntero/MaxPosiciondePuntero == Math.floor(Puntero/MaxPosiciondePuntero) or Puntero>MinPixelInferior) { // Sí, actualizar SumadePintadosNuevos: SumadePintadosNuevos = SumadePintadosNuevos-1; } // ¿Hay un pixel anterior? if (Puntero>1) { // Sí, apuntar a ese: Puntero = Puntero-1; // Continuar haciendo el dibujo: Variar(); } else { // No, aumentar tamaño de hoja y reiniciar. gotoAndPlay (2); } } } actions for fotograma 2 PixelesdeLargo = PixelesdeLargo+1; // Colocados: Pixeles = 0; DistanciaEntrePixeles = 384/PixelesdeLargo; PosicionX = 64-DistanciaEntrePixeles; EnlaFilaActual = 0; PosicionY = 0; MaxPosiciondePuntero = PixelesdeLargo*PixelesdeLargo; Puntero = MaxPosiciondePuntero; // Píxeles pintados: SumadePintados = 0; MinSumadePintados = PixelesdeLargo-1; MinPixelInferior = PixelesdeLargo*(PixelesdeLargo-1); // Píxeles pintados que no estaban en hojas de menos píxeles: SumadePintadosNuevos = 0; // Agregar píxeles en blanco: do { Pixeles = Pixeles+1; if (EnlaFilaActual<PixelesdeLargo) { EnlaFilaActual = EnlaFilaActual+1; PosicionX = PosicionX+DistanciaEntrePixeles; } else { PosicionX = 64; EnlaFilaActual = 1; PosicionY = PosicionY+DistanciaEntrePixeles; } trace ("El pixel "+Pixeles+" se colocó en "+PosicionX+", "+PosicionY); attachMovie("mPixel", "Pixel"+Pixeles, Pixeles); setProperty ("Pixel"+Pixeles, _x, PosicionX); setProperty ("Pixel"+Pixeles, _y, PosicionY); setProperty ("Pixel"+Pixeles, _width, DistanciaEntrePixeles); setProperty ("Pixel"+Pixeles, _height, DistanciaEntrePixeles); } while (Pixeles<MaxPosiciondePuntero); stop (); actions for fotograma 3 stop (); actions for Vacío onClipEvent (enterFrame) { _level0.Variar(); } actions for fotograma 4 stop (); actions for fotograma 5 gotoAndPlay (3);
La función se repite dentro de si misma, supongo que un do while sería mejor, no me di cuenta, pero ese no es el tema, el tema es que hago algo así: Si ColordePixel4 puede colorearse, hacerlo y mostrar dibujo. sino resetearlo. Si el 3 puede colorearse, hacerlo y mostrar dibujo. sino resetearlo. Si el 2... Y así hasta el 1. Cuando hay más píxeles, eso se repite más veces. ¿Qué otro método más rápido sería mejor? ¿es posible, cómo? Me refiero a algo que varíe todo lo necesario sin tener que variar un puntero y repetir un while y estar reseteando 1 cosa a la vez... Si un humano quiere escribir una lista así: 0001 0010 0011 0100 etc No sé bien cómo se hace, pero es como que se mira dónde hay que sumar y si los valores a la derecha están al máximo se resetean. O sea, desde la izquierda se busca el 1er valor que no esté al máximo, se lo aumenta y se resetean los a la derecha suyo. Pero nosotros los humanos es como que no necesitamos mirar desde la izquierda, ya más o menos podemos anticipar en dónde estará el próximo número que debe aumentarse ¿o no? No sé, a mí esa manera me resulta muy lenta, variando las cosas de a una, siento que debe haber algo mejor. Una posibilidad sería hacer sumas normales y luego convertirlo en el valor que se precisa: 0 -> 0000 1 -> 0001 2 -> 0010 Hacer la conversión no creo que tarde mucho ¿pero si los posibles valores fuesen más de 9 o de 10? Por eso uso varias variables, no sólo 1. Uds supongo que usan arrays, pero creo que en el fondo es igual. Si son menos de 9 o 10 posibles valores la conversión es literal: ColordePixel4 = Caracter4 ColordePixel3 = Caracter3 etc Sino creo que se deben hacer operaciones matemáticas para cada uno y eso implica usar un do while... Hay que inventar algo mejor o díganme qué hay que no sé xD Para colmo, en el caso particular de los dibujos, tengo que variar unas variables y luego debo variar colores en base a ellas, creo que lo puedo hacer más rápido, pero el punto es que tendría que usar un do while también (edit: quizá no, probaré). Tampoco es cuestión de estar haciendo los dibujos desde 0 en cada caso, yo intento que se varíen sólo los pixeles que deben variarse. ¿Ideas, info?
|
|
|
474
|
Programación / Programación General / Re: Detectar que luego de moverse el mouse, se detuvo.
|
en: 25 Febrero 2024, 02:31 am
|
Asumiré que es imposible que funcione, aunque no sé la causa.
He visto que la posición del mouse llega a actualizarse en cada frame con framerate 120, así que ese número no sería el problema.
Y disminuyendo el framerate (no quiero) funciona bien, así que el código no es el problema.
¿Tal vez la posición sólo se actualiza rápido luego de que lleva un rato moviéndose? De momento no sé cómo ver eso. ¿Cómo podría? Debería poner un contador de tiempo y... ver si al inicio se actualizaba tan rápido como luego. Haré eso.
Edit: Confirmado que no sirve.
|
|
|
475
|
Foros Generales / Foro Libre / Re: Sinceridad
|
en: 25 Febrero 2024, 01:46 am
|
no tiene sentido que todo el mundo que no sepa del tema que se pregunta respondo diciendo algo parecido como, lo sentimos pero no se sabe la respuesta. Totalmente, en Quora hay muchos que responden así o les dices "leer mi comentario" y en algunas respuestas que dan se nota que no lo leyeron y parece que hubieran usado un bot, nada de eso tiene sentido, es una pérdida de tiempo, se mira la respuesta para nada. En cuanto a los foros, yo también me he quedado con la duda de qué ha pasado, no entiendo por qué Facebook es más exitoso (dicen). El problema de los foros probablemente son los trolls, eso hace que se desconfíe de cualquiera y ponen altas exigencias para participar o te banean por cualquier cosa, o quién sabe, a mí me han baneado de varios lados no sé por qué. Ah, me habían recomendado Likedin, prueba eso. Yo no tengo mucha paciencia como para andar cambiando de sitios, es lioso aprender a usarlos.
|
|
|
476
|
Media / Juegos y Consolas / ¿Qué es medible en todos los videojuegos? Corregir/ampliar mi lista.
|
en: 24 Febrero 2024, 22:05 pm
|
- Casos de (dar una instrucción mediante presionar cierto botón o algo similar): En general: Mide la velocidad promedio conque el jugador presiona cierto botón. El conteo es pausado (me refiero a que sólo cuenta como "caso" el momento en que se presionó un botón o se movió el mouse; si se presionó o movió y no se dejó de hacerse sólo cuenta como 1 caso, debe haber una pausa entre los "casos"). Ejemplo en que más valor implica más habilidad: Veces que aprendió o se burló del oponente (asumiendo que mientras lo hace se pone a si mismo en riesgo). Ejemplo en que más valor implica menos habilidad: Veces que recurrió a activar un escudo.
- 1er frame (frame = instante con cierta duración, es una forma de medir el tiempo) en que ocurrió un caso de: General: Cuánto tardó en presionar cierto botón por 1era vez. Conteo pausado. Habilidoso: Qué tan rápido empezó a correr luego de la señal. Negativo: Qué tan rápido tuvo que frenar antes de llegar a la meta.
- Último frame en que ocurrió un caso de: General: Cuánto tardó en presionar cierto botón por última vez. Conteo pausado. Habilidoso: Cuánto tiempo resistió antes de escapar, o cuan cerca estuvo de presionar el botón en el último momento posible (en juegos de Golf suele haber algo parecido a eso). Negativo: Cuánto tiempo tardó en presionar el botón de aprender (si sobrevivió).
- Frames en que ocurrió un caso de: General: Tiempo en que se estuvo presionando algo. Conteo normal: Diferencias con respecto a "Casos de": 1: Si se hace una misma cosa más de una vez en un mismo frame (lo cual es casi imposible porque los frames cambian muy rápido; es posible por ejemplo si lo que se mide son los botones diferentes presionados al mismo tiempo, porque en ese caso pueden ser más de 1 a la vez), sólo cuenta como 1. 2: Aquí dejar presionado 1 botón durante 5 frames, por ejemplo, cuenta como 5 casos, no se necesita presionar-soltar. Habilidoso: Si mantener presionado el botón implica desactivar un escudo. Negativo: Si implica activarlo.
- Mínima duración de un caso de: General: Se explica solo. Conteo normal. Habilidoso: Es así generalmente, presionar y rápidamente tener listo el dedo para presionar otra cosa, pero podría ser especialmente positivo si se debe golpear algo lo más suavemente posible y depende de cuánto tiempo se haya presionado el botón. Negativo: Similar a lo anterior, difícilmente resulta negativo, el ejemplo podría ser en un juego en que se deba dar mucha energía a algo (mantener el botón presionado un tiempo) y darle poca sea un desperdicio (en juegos de automóviles no vale mucho porque, incluso acelerar durante un poquito es mejor que no acelerar).
- Máxima duración de un caso de: General: Parece igual que "Frames en que ocurrió un caso de" pero eso cuenta la duración total y esto la máxima antes de una pausa. Conteo normal. Habilidoso: Si mantener presionado el botón implica desactivar un escudo. Negativo: Si implica activarlo.
- Por frames, mínimos casos de: General: Mínima velocidad de presión. Para hacer esto, cuando hay un frame en que no hubo presión se empieza a contar en cuántos más seguidos no la hubo. El conteo que resulte mayor es X. El resultado será "0 casos en X frames". Si se presionara en absolutamente cada frame (lo cual se supone imposible como ya expliqué), el resultado sería "X casos en X frames", y si además de eso a veces se presionara varias veces por frame, sería "VECES casos en 1 frame". Todo esto puede ser confuso pero es la mejor forma que se me ocurrió de hacerlo. Conteo pausado. Habilidoso (como de costumbre: Mayor valor es mejor): Cuando presionar rápido un botón hace que un golpe sea más fuerte. Negativo: Dar la misma orden varias veces (asumiendo que es innecesario).
- Por frames, máximos casos de: General: Máxima velocidad de presión. Para hacer esto, cuando hay un caso se empieza a contar cuántos frames se tardó en ocurrir otro. El conteo que resulte menor es N. El resultado será "2 casos en N frames". Si el caso ocurriera en cada frame, sería "X casos en X frames", y si además de eso a veces el caso ocurriera varias veces por frame, sería "VECES casos en 1 frame". Conteo pausado. Los ejemplos de antes son válidos.
- Mínima/máxima distancia (en frames) entre 2 casos de: Este es un método peor de medir la velocidad mínima/máxima de eventos, ya que uno podría ocurrir en un mismo frame más de 1 vez. No le veo sentido a usarlo.
- En un mismo frame mínimos/máximos casos de: Por si mismo es poco útil pero es complementario de lo anterior, pero el método que puse más arriba combina ambos, ergo tampoco le veo sentido a usar este.
Luego hay relaciones como: Mínima distancia (en frames) entre una instrucción A y una B (asumiendo que puede ser 0 si ambas ocurrieron en un mismo frame).
Condiciones como: Casos de A mientras A<B donde A es una instrucción (presión de botón, etc). e B es un número fijo u otra instrucción.
Y lo podemos mezclar con propiedades, como: Casos de A mientras el largo de A<B
...pero eso lo pensaré luego.
En resúmen es: - Casos en que se da cierta instrucción (debe haber pausa). - 1er momento en que se da. - Último momento en que se da. - Tiempo en que se da la instrucción. - Mínima duración conque se repite. - Máxima duración conque se repite. - Mínima velocidad conque se repite (debe haber pausa). - Máxima velocidad conque se repite (debe haber pausa).
¿Qué me falta?
|
|
|
477
|
Foros Generales / Foro Libre / Re: Sinceridad
|
en: 24 Febrero 2024, 07:27 am
|
Yo en general cuando sé respondo salvo que me parezca que quieren hacer malware o algo así, o si la pregunta me parece muy absurda (por ejemplo una vez uno preguntó qué pasa si martillaba una moneda a diario).
Ya sabes que mucha participación no hay, así que no tiene mucho sentido que te sorprenda que no te respondan, más si tus preguntas son difíciles de responder.
|
|
|
478
|
Programación / Programación General / Detectar que luego de moverse el mouse, se detuvo.
|
en: 23 Febrero 2024, 09:32 am
|
Y entonces quiero que ocurra cierto evento. Con esto el evento (_level0.gotoAndStop(5)) ocurre por el simple hecho de mover el mouse, aunque el mouse no se haya detenido, está mal: // En frame 1: Movement = "Never"; onClipEvent (enterFrame) { if (Movement == "Sí") { Movement = "Frenado"; } else if (Movement == "Frenado") { _level0.gotoAndStop(5); } } onClipEvent (mouseMove) { Movement = "Sí"; } onClipEvent (mouseDown) { if (Movement != "Frenado") { _level0.Mensaje = "Perdiste por hacer clic."; _level0.gotoAndStop(6); } } onClipEvent (keyDown) { if (Movement != "Frenado") { _level0.Mensaje = "Perdiste por hacer clac."; _level0.gotoAndStop(6); } }
Se supone que al moverlo Movement cambia a "Sí", luego el frame se repite y cambia a "Frenado" pero si el mouse se sigue moviendo debería cambiar a "Sí" de nuevo, por lo que la condición de Movement == "Frenado" no debería cumplirse, pero sí se cumple. Intenté esto: // En frame 1: Movement = "Never"; ActualXMouse = _xmouse; ActualYMouse = _ymouse; onClipEvent (enterFrame) { if (_level0.ActualXMouse != _level0._xmouse or _level0.ActualYMouse != _level0._ymouse) { Movement = "Sí"; trace ("_level0.ActualXMouse era: "+_level0.ActualXMouse); _level0.ActualXMouse = _level0._xmouse; trace ("_level0.ActualXMouse es: "+_level0.ActualXMouse); trace ("_level0.ActualYMouse era: "+_level0.ActualYMouse); _level0.ActualYMouse = _level0._ymouse; trace ("_level0.ActualYMouse es: "+_level0.ActualYMouse); } else if (Movement == "Sí") { trace ("Movement == Sí"); if (_level0.ActualXMouse == _level0._xmouse && _level0.ActualYMouse == _level0._ymouse) { _level0.gotoAndStop(5); } } } onClipEvent (mouseMove) { // Movement = "Sí"; } onClipEvent (mouseDown) { if (Movement != "Frenado") { _level0.Mensaje = "por hacer clic."; _level0.gotoAndStop(6); } } onClipEvent (keyDown) { if (Movement != "Frenado") { _level0.Mensaje = "por hacer clac."; _level0.gotoAndStop(6); } }
Y obtengo el mismo resultado. Había hablado con GPT, cambié algo, y al final ya no entiendo lo que dice. En Macromedia Flash 5 ¿la velocidad conque se ejecutan los frames puede ser más rápida que la velocidad conque se actualiza la posición del mouse? En Macromedia Flash 5, la velocidad con la que se ejecutan los frames está determinada por la configuración de fotogramas por segundo (FPS) del proyecto. Por defecto, la configuración de FPS es de 12 fotogramas por segundo, pero se puede ajustar según las necesidades del proyecto.
La velocidad con la que se actualiza la posición del mouse en Flash 5 está vinculada a la frecuencia de actualización del sistema operativo y del hardware del mouse. En general, la posición del mouse se actualiza con bastante rapidez y en tiempo real, lo que significa que los eventos del mouse se pueden detectar y responder de manera rápida.
Dicho esto, es posible que en situaciones extremas, donde haya una alta carga de trabajo en el procesador o limitaciones de rendimiento, la velocidad de actualización de la posición del mouse pueda ser más lenta en comparación con la velocidad de ejecución de los frames de Flash. Sin embargo, esto no es una limitación inherente de Flash 5, sino más bien una cuestión de rendimiento del sistema en el que se ejecuta.
En resumen, en condiciones normales y en sistemas bien configurados, la velocidad de ejecución de los frames en Flash 5 generalmente es más rápida que la velocidad de actualización de la posición del mouse. Le mostré el código y le pregunté por qué no funcionaba. El código que proporcionaste parece tener un par de problemas que podrían estar impidiendo que funcione correctamente. A continuación, te señalaré los posibles problemas y te daré una solución propuesta:
1. Comparación de posiciones del mouse: En tu condición `if (_level0.ActualXMouse != _level0._xmouse && _level0.ActualYMouse != _level0._ymouse)`, estás utilizando el operador lógico "&&" (y) para verificar si las posiciones X e Y del mouse han cambiado. Sin embargo, esto significa que el código dentro de esa condición se ejecutará solo si ambas condiciones son verdaderas al mismo tiempo, lo que puede ser poco probable. Es posible que desees utilizar el operador lógico "||" (o) en su lugar, para verificar si al menos una de las condiciones es verdadera.
Solución propuesta: ```actionscript if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) { // Código para cuando la posición del mouse ha cambiado } else if (Movement == "Sí") { // Código para cuando la posición del mouse se ha mantenido igual después de un movimiento previo } ```
2. Inicialización de la variable "Movement": No se muestra en el código proporcionado cómo se inicializa la variable "Movement". Si no se inicializa correctamente en otra parte de tu código, la condición `else if (Movement == "Sí")` puede no evaluarse como verdadera y, por lo tanto, el código dentro de ese bloque no se ejecutará.
Solución propuesta: Asegúrate de que la variable "Movement" se inicialice correctamente antes de que se active el código que has proporcionado, por ejemplo, al comienzo del juego o en otro evento relevante.
Espero que estas sugerencias te ayuden a resolver el problema y que tu juego funcione correctamente. Si sigues teniendo dificultades, no dudes en proporcionar más detalles o preguntar más preguntas. Cambié algo que me propuso, que me pareció bien, pero el resultado no cambió. Mis disculpas por la confusión anterior. Luego de revisar nuevamente el código, noto que hay un error en la lógica de las condiciones. El problema radica en que estás comparando la posición del mouse actual con la posición anterior en cada cuadro de animación (enterFrame), lo que hace que la condición siempre se cumpla mientras muevas el mouse.
Para lograr el comportamiento deseado de ganar al mover el mouse y luego detenerlo, puedes implementar una solución alternativa utilizando eventos del mouse en lugar de la lógica basada en enterFrame. A continuación, te muestro un ejemplo de cómo podrías modificar el código:
```actionscript // Escucha el evento de movimiento del mouse this.onMouseMove = function() { // Guarda la posición del mouse actual _level0.ActualXMouse = _level0._xmouse; _level0.ActualYMouse = _level0._ymouse; }
// Escucha el evento de liberación del mouse this.onMouseUp = function() { // Verifica si el mouse se ha movido previamente y luego se detuvo if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) { // El mouse se ha movido y luego se detuvo, se gana el juego _level0.gotoAndStop(5); } } ```
En este código, utilizamos los eventos `onMouseMove` y `onMouseUp` para detectar el movimiento y la liberación del mouse, respectivamente. Al mover el mouse, guardamos la posición actual en las variables `_level0.ActualXMouse` y `_level0.ActualYMouse`. Luego, al soltar el mouse, verificamos si la posición del mouse ha cambiado en comparación con la posición guardada previamente. Si ha habido un movimiento y luego se detuvo, se activa la condición y se gana el juego.
Espero que esta solución funcione correctamente para tu juego. Si sigues teniendo problemas o tienes más preguntas, no dudes en hacérmelo saber. Estoy aquí para ayudarte. MouseUp en mi lenguaje creo que es el evento "se dejó de mantener el botón presionado", no es lo mismo. En fin, no entiendo qué me dice: ¿qué condición dices que se cumple siempre? Mis disculpas por la confusión en mi respuesta anterior. La condición que mencioné anteriormente no se cumple siempre, fue un error en mi explicación.
El problema principal en tu código original es que la condición `if (_level0.ActualXMouse != _level0._xmouse && _level0.ActualYMouse != _level0._ymouse)` se cumple cuando cualquiera de las coordenadas X o Y del mouse cambia. Esto significa que si solo una de las coordenadas cambia, el código dentro de esa condición se ejecutará. Sin embargo, según tu descripción, deseas que el juego se gane solo cuando ambas coordenadas del mouse se mantienen iguales después de un movimiento previo.
Para corregir esto, podemos modificar la condición para que verifique si ambas coordenadas X e Y del mouse se mantienen iguales. Aquí tienes el código actualizado:
```actionscript onClipEvent(enterFrame) { if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) { // Actualiza las coordenadas del mouse si han cambiado _level0.ActualXMouse = _level0._xmouse; _level0.ActualYMouse = _level0._ymouse; } else if (Movement == "Sí") { // Verifica si las coordenadas del mouse se mantienen iguales después de un movimiento previo _level0.gotoAndStop(5); // Gana el juego } } ```
En este código actualizado, utilizamos el operador lógico "||" (o) para verificar si cualquiera de las coordenadas X o Y del mouse ha cambiado. Si alguna de las coordenadas cambia, actualizamos las variables `_level0.ActualXMouse` y `_level0.ActualYMouse` para reflejar las nuevas posiciones del mouse. Luego, en el bloque `else if`, verificamos si ambas coordenadas se mantienen iguales después de un movimiento previo. Si es así, se ejecuta el código para ganar el juego.
Espero que esta aclaración solucione el problema y te permita lograr el comportamiento deseado en tu juego. Si tienes más preguntas, no dudes en hacerlas. Estoy aquí para ayudarte. Ahí parece una versión más simple de la que hice y que no creo que funcione, pero me cuesta entender qué dice y ya me cansé. ¿Solución?
|
|
|
480
|
Informática / Software / Re: ¿Excel podría configurarse para que al escribir se cambie de celda si...?
|
en: 23 Febrero 2024, 06:51 am
|
Justo hace una semana más o menos encontré una solución a esto. Para pasar rápidamente al final de la siguiente sección, en esos lugares debo haber puesto **, es sólo una vez cada sección, así: Proyecto 1: 1: jndjndjsdn 2: djknjdnd ** ------------------------ Proyecto 2: 1: jndjndjsdn 2: djknjdnd ** -------------------------- Luego uso F3 (en el bloc de notas), escribo **, y así voy rápidamente al final de cada sección, donde están los ** 
|
|
|
|
|
|
|