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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿El programa dice que 9999999+1 es 9999999.99999999?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿El programa dice que 9999999+1 es 9999999.99999999?  (Leído 6,442 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.414


Hackentifiko!


Ver Perfil
¿El programa dice que 9999999+1 es 9999999.99999999?
« en: 5 Diciembre 2023, 10:17 am »

Quiero un programa que haga esto:
N = 0
N = 1
N = 10
N = 2
N = 101
N = 1000
etc

O sea:
1era vuelta: Se produce un número de 1 cifra.
2nda: De 1 cifra, de 2 cifras.
3era: De 1 cifra, de 2 cifras, de 3 cifras.
Y así sigue.

Cada nuevo número de cierta cifra es +1 con respecto al anterior de esas cifras.

Cuando con 1 cifra no haya más posibles, ya no se producen más de esos, lo mismo ocurre con los de cualquier otra cifra. Es que luego del 9 viene el 10 pero ese tiene 2 cifras, ya se produjo, no quiero que se produzcan repetidos.

Hice este código y le puse traces porque me da un error que no entiendo:
Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      MinLongitud = 1;
  4.      MaxLongitud = 1;
  5.      N1 = -1;
  6.   actions for fotograma 2
  7.      Longitud = MinLongitud;
  8.      trace ("F2: Longitud: "+Longitud);
  9.   actions for fotograma 4
  10.      Nombre = "N"+Longitud;
  11.      trace ("Nombre: "+Nombre);
  12.      N = eval(Nombre)+1;
  13.      trace ("N: "+N);
  14.      if (String(N).length>Longitud) {
  15.         trace (String(N).length+" > "+Longitud);
  16.         // El valor ya fue producido.
  17.         MinLongitud = MinLongitud+1;
  18.         trace ("MinLongitud: "+MinLongitud);
  19.         gotoAndPlay (2);
  20.      } else {
  21.         // Guardar el valor en la lista correspondiente.
  22.         set (Nombre, N);
  23.         trace ("Se generó "+Nombre+": "+N);
  24.         C = String(N).charat(N);
  25.         // trace (N+" resulta "+C);
  26.         if (C == 0) {
  27.            if (Solfor0 == undefined) {
  28.               Solfor0 = N;
  29.            }
  30.         } else if (C == -9) {
  31.            if (Solfor9 == undefined) {
  32.               Solfor9 = N;
  33.            }
  34.         } else if (C == 4.5) {
  35.            if (Solfor4 == undefined) {
  36.               Solfor4 = N;
  37.            }
  38.         } else if (C == -7.2) {
  39.            if (Solfor7 == undefined) {
  40.               Solfor7 = N;
  41.            }
  42.         }
  43.      }
  44.   actions for fotograma 5
  45.      if (Longitud<MaxLongitud) {
  46.         Longitud = Longitud+1;
  47.         gotoAndPlay (4);
  48.      } else {
  49.         // Se creará una nueva lista.
  50.         MaxLongitud = MaxLongitud+1;
  51.         set ("N"+MaxLongitud, -1+Math.pow(10, MaxLongitud-1));
  52.         trace ("Se creó N"+MaxLongitud+": "+String(-1+Math.pow(10, MaxLongitud-1)));
  53.         gotoAndPlay (2);
  54.      }

Salida:
Citar
F2: Longitud: 1
Nombre: N1
N: 0
Se generó N1: 0
Se creó N2: 9
F2: Longitud: 1
Nombre: N1
N: 1
Se generó N1: 1
Nombre: N2
N: 10
Se generó N2: 10
Se creó N3: 99
F2: Longitud: 1
Nombre: N1
N: 2
Se generó N1: 2
Nombre: N2
N: 11
Se generó N2: 11
Nombre: N3
N: 100
Se generó N3: 100
Se creó N4: 999
F2: Longitud: 1
Nombre: N1
N: 3
Se generó N1: 3
Nombre: N2
N: 12
Se generó N2: 12
Nombre: N3
N: 101
Se generó N3: 101
Nombre: N4
N: 1000
Se generó N4: 1000
Se creó N5: 9999
F2: Longitud: 1
Nombre: N1
N: 4
Se generó N1: 4
Nombre: N2
N: 13
Se generó N2: 13
Nombre: N3
N: 102
Se generó N3: 102
Nombre: N4
N: 1001
Se generó N4: 1001
Nombre: N5
N: 10000
Se generó N5: 10000
Se creó N6: 99999
F2: Longitud: 1
Nombre: N1
N: 5
Se generó N1: 5
Nombre: N2
N: 14
Se generó N2: 14
Nombre: N3
N: 103
Se generó N3: 103
Nombre: N4
N: 1002
Se generó N4: 1002
Nombre: N5
N: 10001
Se generó N5: 10001
Nombre: N6
N: 100000
Se generó N6: 100000
Se creó N7: 999999
F2: Longitud: 1
Nombre: N1
N: 6
Se generó N1: 6
Nombre: N2
N: 15
Se generó N2: 15
Nombre: N3
N: 104
Se generó N3: 104
Nombre: N4
N: 1003
Se generó N4: 1003
Nombre: N5
N: 10002
Se generó N5: 10002
Nombre: N6
N: 100001
Se generó N6: 100001
Nombre: N7
N: 1000000
Se generó N7: 1000000
Se creó N8: 9999999
F2: Longitud: 1
Nombre: N1
N: 7
Se generó N1: 7
Nombre: N2
N: 16
Se generó N2: 16
Nombre: N3
N: 105
Se generó N3: 105
Nombre: N4
N: 1004
Se generó N4: 1004
Nombre: N5
N: 10003
Se generó N5: 10003
Nombre: N6
N: 100002
Se generó N6: 100002
Nombre: N7
N: 1000001
Se generó N7: 1000001
Nombre: N8
N: 9999999.99999999
16 > 8
MinLongitud: 2
F2: Longitud: 2
Nombre: N2
N: 17
Se generó N2: 17

O sea, no genera el número 8 ni el 9, porque, si lo interpreté bien, cuando N8 = 9999999 y Longitud = 8, y se hace esto:
Código:
Nombre = "N"+Longitud;
N = eval(Nombre)+1;
El resultado es:
Nombre = "N"+8 = "N8"
N = eval(Nombre)+1 = eval("N8")+1 = 9999999+1 = 9999999.99999999
y apartir de ahí no sé qué hace, pero ya eso es un error ¿mío o qué pasa? ¿el máximo valor que puede tener una variable en Macromedia Flash 5 es 9999999.99999999 no 10000000? ¿o sea no más de 7 caracteres enteros? No me resulta un problema, creo, pero ¿por qué sucede eso? ¿tiene sentido? Si se puede guardar textos largos ¿por qué no un número? ¿o con números largos calcula mal tal como ocurre cuando son decimales?


« Última modificación: 5 Diciembre 2023, 10:20 am por Tachikomaia » En línea

D3s0rd3n

Desconectado Desconectado

Mensajes: 97


Tu Mente es mi arma. Entregame tu mente


Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #1 en: 6 Diciembre 2023, 01:28 am »

Más bien tiene que ver con una limitacion de los números flotantes en general. Es una consecuencia de que no todos los números decimales pueden ser representados exactamente con un número binario. Hay "hacks" y algoritmos que ayudan a mitigar esto pero ya es una limitacion de las computadoras binarias en general. Algunas lo resuelven mejor que otras pero todas lo tienen.


En línea

Gobiernos del Mundo Industrial, ustedes, cansados gigantes de carne y acero
vengo del Ciberespacio, el nuevo hogar de la Mente. En nombre del futuro, les
pido en el pasado  que nos dejen en paz.  No son  bienvenidos entre nosotros.
No tienen ninguna soberania sobre el lugar donde nos reunimos.
Tachikomaia


Desconectado Desconectado

Mensajes: 1.414


Hackentifiko!


Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #2 en: 6 Diciembre 2023, 05:04 am »

Pero estos números son enteros, se convierten a decimal sin que haya habido decimales de por medio.
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.838


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #3 en: 6 Diciembre 2023, 14:33 pm »

Hola, los números se convierten a decimales por las operaciones que hacés, un ejemplo sería una división que ingresas un número entero de 2 y lo divides por 4 te da como resultado un número decimal de 0,5


Saludos
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.163



Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #4 en: 6 Diciembre 2023, 16:12 pm »

Me parece que es problema de Flash 5, yo lo he probado en mi Macromedia Flash MX 2004 y sin problemas, incluso cuando exporto como Flash 5 desde ahí (Deberías migrar a Flash MS 2004 y AS2 XD)

Según la documentación de Math.pow()



Supongo que no lo terminaron de pulir porque yo veo que el compilado si que sale redondeado (he descargado e instalado Macromedia Flash 5 y un decompilador para comprobarlo)

El código original:

Código
  1. trace( -1 + Math.pow(10, 8 - 1) )

Macromedia Flash 5 lo compila a:

Código
  1. trace(9999998.999999994);

Macromedia Flash MX 2004 lo compila a:

Código
  1. trace(9999999);

Pues arriba está aproximando y eso está causando tu problema, aunque se esté usando Flash 5 que supuestamente no usa aproximaciones. Una posible solución es forzar un redondeo con Math.Round:

Código
  1. trace( Math.Round(-1 + Math.pow(10, 8 - 1)) )

---
Para ver como se termina compilando un swf se puede usar un decompilador flash, en mi caso usé JPEXS, un decompilador te permite ver a que instrucciones reales se convierte un script, y que el reproductor flash entiende
En línea

D3s0rd3n

Desconectado Desconectado

Mensajes: 97


Tu Mente es mi arma. Entregame tu mente


Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #5 en: 6 Diciembre 2023, 20:34 pm »

Hola, los números se convierten a decimales por las operaciones que hacés, un ejemplo sería una división que ingresas un número entero de 2 y lo divides por 4 te da como resultado un número decimal de 0,5

Esto.

Como dije en mi otro mensaje los float point tienen ese problema. Es una de la limitaciones de nuestraaner de lleva la informática. Solo hay que tenerlo en cuenta y lidiar con el.
En línea

Gobiernos del Mundo Industrial, ustedes, cansados gigantes de carne y acero
vengo del Ciberespacio, el nuevo hogar de la Mente. En nombre del futuro, les
pido en el pasado  que nos dejen en paz.  No son  bienvenidos entre nosotros.
No tienen ninguna soberania sobre el lugar donde nos reunimos.
.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #6 en: 7 Diciembre 2023, 04:14 am »

Fuente: https://actionsnippet.com/?tag=biginteger

Adding Very Large Numbers

Código:
// tracing out large numbers will go into exponent notation
trace(1000000000000000000000000);
// outputs: 1e+24
 
var a:String =  "1000000000000000000000009";
var b:String = "12000000000000000000000001";
 
// bigAdd function adds two large numbers
trace(bigAdd(a, b));
// outputs: 13000000000000000000000010
 
// unclear what regular addition is doing here:
trace(int(a) + int(b));
// outputs: -3758096384
 
function bigAdd(a:String, b:String):String{
       var answer:String="";
       var carry:int = 0;
       var zeros:int = 0;
       var i:int = 0;
       var max:int = 0;
       
        // obtain max variable and prepend zeros to the shortest string
       if (a.length> b.length){
          max = a.length;
          zeros = max - b.length;
           for (i= 0; i<zeros; i++) {
                b = "0" + b;
           }
       }else if (b.length>  a.length){
           max = b.length;
           zeros = max - a.length;
           for (i= 0; i<zeros; i++) {
                a = "0" + a  ;
            }
       }else{
           // a and b have same number of digets
           max = a.length;  
       }
       
       // add each character starting with the last (max - 1),
       // carry the 1 if the sum has a length of 2
       for (i = max - 1;  i> -1; i--){
               var sum:String = String(int(a.charAt(i)) + int(b.charAt(i)) + carry);
 
               if (sum.length == 2){
                       answer = sum.charAt(1) + answer;
                       carry = 1;
               }else{
                       carry = 0;
                       answer = sum + answer;
               }
       }
       if (carry == 1){
           answer = 1 + answer;
       }
       return answer;
}
En línea


Tachikomaia


Desconectado Desconectado

Mensajes: 1.414


Hackentifiko!


Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #7 en: 7 Diciembre 2023, 13:59 pm »

Daniel:
Cierto pero en este caso no hubo división, es entero+entero y resulta decimal  :o

Deberías migrar a Flash MS 2004 y AS2 XD)
Te cuento.

Flash 5 fue el 1er Flash que tuve, no podía actualizarlo porque no tenía Internet ni contactos, ni interés porque estaba bien. Desde cierto punto empecé a usar una función "secreta" (que no recuerdo cómo averigué): "fs command (save, (nombre.extensión))" o algo así, aquí la mencionan:
https://www.forosdelweb.com/f16/fscommand-447897/

También se menciona que no está incluída en los manuales, en otros lados leí que "was hacked" o algo así, por eso dije "secreta".

Cuando conseguí Flash 8, no me funcionaba eso. Y me resultaba crucial. Busqué en cibercafés cómo se guardaba variables en archivos, y lo que encontré me resultó tan absurdamente complicado que decidí volver a usar el 5.

Hace mucho no uso esa función, pero de hecho he visto que en nuevas versiones de Flash usan eso de Import que no me gusta y no permiten poner código en películas, que también me resultaba esencial, y aún hoy me resulta útil... Aunque puede ser por las mismas limitaciones de F5. Por ejemplo ¿cómo captas que se presionó una tecla cualquiera? De las que funcionan, Esc parece que no. Yo intenté algo como:
LastKey = getcode();
Y chequear si cambia, creo que inicia como -1 pero... sólo si entraste con el mouse, sino te capta el enter, e inicia con su valor y asume que presionaste una tecla. Estoy haciendo un juego muy sencillo que se gana si presionas una tecla cualquiera, pero debo evitar el error que te mencioné xD Así lo tengo:
Código:
Escena 1
   // En el fotograma 1 y 2 dice "Cargando..."
   actions for Vacío (fotograma 2)
      onClipEvent (keyDown) {
         _level0.gotoAndPlay(1);
      }
   // En fotograma 3 y 4 se muestra mensaje "Presiona una tecla".
   actions for fotograma 4
      gotoAndPlay (3);
   actions for Vacío (fotograma 3 y 4)
      onClipEvent (keyDown) {
         // Muestra mensaje "Ganaste".
         _level0.gotoAndStop(5);
      }

En F8 llegué a usar algo llamado Listener o algo así, no me acuerdo, pero me gustaba más poner acciones en objetos...

Otro problema que tuve con F8 es que yo quería que me abriera los archivos con el 5 pero se me cambiaba, y al intentar desinstalarlo me decía que no tenía permiso...

Por todo eso sigo prefiriendo el 5 o al menos sería arriesgado instalar otros, no los necesito.

Lo que sí, tengo archivos que no puedo abrir, pero eso es cuestión de ir a un ciber algún día, e instalar algo ahí, no tengo apuro.

Creo que en F5 es imposible hacer algo como esto:
Si se presiona el mouse, hacer X.
sino si se presiona una tecla, hacer Y.
sino si se mueve el mouse, hacer Z.

Porque lo 2ndo sólo se puede hacer con "onClipEvent (keyDown)" en una película como te comenté, y no se puede usar else con eso xD Entonces puede que se apliquen todos a la vez. Claro, puede ponerse los códigos en distintos frames con ifs, pero no es una forma cómoda de hacerlo, a eso me refería.

Citar
Código
  1. trace( -1 + Math.pow(10, 8 - 1) )

Macromedia Flash 5 lo compila a:

Código
  1. trace(9999998.999999994);

Macromedia Flash MX 2004 lo compila a:

Código
  1. trace(9999999);
M, yo probé esto:
Código:
Longitud = 8;
Nombre = "N"+Longitud;
N8 = 9999999;
N = eval(Nombre)+1;
trace ("N: "+N);
set (Nombre, eval(Nombre)+1);
trace (Nombre+": "+eval(Nombre));
stop ();

Y resultó bien, entonces asumo que funciona mal cuando el programa está medio sobrecargado, al menos en mi caso, en el tuyo parece que siempre.

Citar
JPEXS
Me lo anoto.

Ah, mira, justo miré anotaciones y me acordé de algo:
"Parece que no es posible cambiar el color de algo referenciándolo con eval, no puede tener un nombre variable, debe ser la película. Habrá que probar si no hay manera, si cometí un error, sino habrá que usar ifs... o functions."
Aún no lo analicé mucho, son 4 cuadrados grandes puestos como si fuesen 2x2 píxeles pero que ocupan toda la pantalla. Son Pixel1, Pixel2, Pixel3 y Pixel4. La idea es que en la pantalla se generen todos los posibles dibujos con esos cambiando de color a blanco y negro nada más. Este es el código que debo arreglar:
Código
  1. Escena 1
  2.   actions for fotograma 1
  3.      Puntero = 4;
  4.      function Variar () {
  5.         Pixel = "P"+Puntero;
  6.         evaledPixel = eval(Pixel);
  7.         // ¿El pixel puede cambiar de color?
  8.         if (evaledPixel<1) {
  9.            // Sí, cambiarlo.
  10.            set (Pixel, evaledPixel+1);
  11.            Col = new Color(evaledPixel);
  12.            Col.setRGB(parseInt(FFFFFF, 16));
  13.            DibujoListo = "Sí";
  14.            gotoAndPlay (4);
  15.            // Darme tiempo de verlo
  16.            // volver
  17.         } else {
  18.            // No, resetearlo.
  19.            set (Pixel, 0);
  20.            Col = new Color(evaledPixel);
  21.            Col.setRGB(parseInt(0, 16));
  22.            // ¿Hay un pixel anterior?
  23.            if (Puntero>1) {
  24.               // Sí, apuntar a ese.
  25.               Puntero = Puntero-1;
  26.               // Continuar haciendo el dibujo.
  27.               DibujoListo = "No";
  28.            }
  29.         }
  30.      }
  31.   actions for fotograma 2
  32.      Variar();
  33.   actions for fotograma 3
  34.      Variar();
  35.      if (DibujoListo == "No") {
  36.         gotoAndPlay (2);
  37.      }
  38.   actions for fotograma 20
  39.      gotoAndPlay (2);
« Última modificación: 7 Diciembre 2023, 14:15 pm por Tachikomaia » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.163



Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #8 en: 11 Diciembre 2023, 04:26 am »

Citar
Flash 5 fue el 1er Flash que tuve, no podía actualizarlo porque no tenía Internet ni contactos, ni interés porque estaba bien. Desde cierto punto empecé a usar una función "secreta" (que no recuerdo cómo averigué): "fs command (save, (nombre.extensión))" o algo así, aquí la mencionan:
https://www.forosdelweb.com/f16/fscommand-447897/

Hasta Flash 5 se usaba esa técnica, a partir de Flash 6 se eliminó esa posibilidad pero se implementó SharedObject que sirve para guardar y traer datos en Disco, es lo que se usa en juegos actuales para guardar puntuaciones, preferencias, etc. Si sabes algo de cookies en la web, pues es prácticamente lo mismo pero aplicado a flash. En sí es muy sencillo de usar, quizá has visto otros métodos que son para ActionScript 2.0 o 3.0 para manipular archivos o enviar/recibir datos a servidores web, eso si es alguito más complejo

Citar
Por ejemplo ¿cómo captas que se presionó una tecla cualquiera? De las que funcionan, Esc parece que no. Yo intenté algo como:
LastKey = getcode();
Y chequear si cambia, creo que inicia como -1 pero... sólo si entraste con el mouse, sino te capta el enter, e inicia con su valor y asume que presionaste una tecla. Estoy haciendo un juego muy sencillo que se gana si presionas una tecla cualquiera, pero debo evitar el error que te mencioné xD Así lo tengo:

No comprendo bien esa parte pero si puedes ver que tecla se presionó y actuar de acuerdo a ello, incluido el Escape, puedes ver los códigos de cada tecla con por ejemplo (recomiendo keyUp):

Código
  1. onClipEvent (keyUp) {
  2.    trace (Key.getCode());
  3. }

Puedes comparar Key.getCode() con el número que corresponde a alguna tecla y actuar de acuerdo a ello, por ejemplo la tecla Escape corresponde a 27

Código
  1. onClipEvent (keyUp) {
  2.    if (Key.getCode() == 27) {
  3.        trace ("Usted a presionado Escape");
  4.    }
  5. }
  6.  

Citar
M, yo probé esto:
Código:
Longitud = 8;
Nombre = "N"+Longitud;
N8 = 9999999;
N = eval(Nombre)+1;
trace ("N: "+N);
set (Nombre, eval(Nombre)+1);
trace (Nombre+": "+eval(Nombre));
stop ();

Y resultó bien, entonces asumo que funciona mal cuando el programa está medio sobrecargado, al menos en mi caso, en el tuyo parece que siempre.

No, el problema es Math.pow() en Macromedia Flash 5, este siempre devuelve un decimal aproximado por lo que deberías usar Math.round() para compensarlo, cuando haces operaciones con esos valores aproximados pierdes todavía más precisión porque hay varios dígitos enteros y decimales con los que se debe repartir el número completo. Flash siempre hace algunos redondeos internos cuando trabaja, por ejemplo si ejecutas:

Código
  1. trace(9999999.999999999)
  2. trace(9999999.999999994)

Devuelve:

10000000
9999999.99999999


Citar
¿El programa dice que 9999999+1 es 9999999.99999999?

Entonces en realidad nunca estás sumando 9999999+1, la operación que estás haciendo es:

99999998.99999991 + 1

Lo que haces es: -1 + Math.pow(10, 8) lo cual internamente devuelve 99999998.99999991 y no el 99999999 que esperabas. Luego le sumas 1 quedando 99999999.9999999. Lo que sugería es que uses Math.round así:

Código
  1. trace( Math.pow(10,8) )
  2. trace( Math.round(Math.pow(10,8)) )
  3.  
  4. trace( -1 + Math.pow(10,8) )
  5. trace( -1 + Math.round(Math.pow(10,8)) )

lo que devuelve:

99999999.9999999
100000000
99999998.9999999
99999999
En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.414


Hackentifiko!


Ver Perfil
Re: ¿El programa dice que 9999999+1 es 9999999.99999999?
« Respuesta #9 en: 11 Diciembre 2023, 19:04 pm »

se implementó SharedObject que sirve para guardar y traer datos en Disco, es lo que se usa en juegos actuales para guardar puntuaciones, preferencias, etc. Si sabes algo de cookies en la web, pues es prácticamente lo mismo pero aplicado a flash. En sí es muy sencillo de usar, quizá has visto otros métodos que son para ActionScript 2.0 o 3.0 para manipular archivos o enviar/recibir datos a servidores web, eso si es alguito más complejo
Voy a buscar por curiosidad. Sí, yo había leído que había que enviar un email, supongo que leí mal, no podía creerlo :o ¡Enviar un email para guardar variables en un archivo!

Citar
No comprendo bien esa parte
Imagina un juego que se gana por presionar cualquier tecla.

Normalmente sería algo así:
Código
  1.   actions for fotograma 1
  2.      // Mostrar mensaje "Presiona una tecla."
  3.      stop ();
  4.   actions for Movie1
  5.      onClipEvent (keyDown) {
  6.         _level0.gotoAndStop(2);
  7.      }
  8.   actions for fotograma 2
  9.      // Mostrar mensaje "Ganaste."

Pero si entras al juego habiendo presionado Enter, el juego creerá que presionaste eso en él (salvo que tarde mucho en abrirse o enseguida dejes de presionar la tecla), por eso 1ero hay que chequear que ya no se esté presionando una tecla, así:
Código
  1.   // Desde frames 1 a 3 mostrar mensaje "Presiona una tecla."
  2.   actions for Movie1 (ubicada desde frame 1 a 3)
  3.      onClipEvent (keyDown) {
  4.         _level0.gotoAndPlay(2);
  5.      }
  6.   actions for fotograma 4
  7.      stop ();
  8.   actions for Movie2
  9.      onClipEvent (keyDown) {
  10.         _level0.gotoAndStop(5);
  11.         // Ahí se muestra mensaje "Ganaste".
  12.      }

A mí la Esc no me funciona en eso, pero agregando tu código podría lograrlo, pruebo, pero ¿te das cuenta que hay muchas teclas que podrían tener que agregarse? Alt, ImprPant, etc.

Ah, hasta me había olvidado que usé Math.pow xD Tengo pésima memoria para algunas cosas xD
Ahora entiendo mejor el mensaje de .xAk. sobre agregar 0s como si fuese un string. Así que es el pow... Menos mal, sería incómodo que si uno suma un número "grande" pueda fallar, sin saber realmente qué es "grande" para Flash.
« Última modificación: 11 Diciembre 2023, 19:07 pm por Tachikomaia » 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