Tengo una matriz bidimensional que almacena "trozos" como lienzos en un juego. Me encontré con un problema extraño que parece haberse manifestado aparentemente sin que yo cambiara nada. El rango puede volverse negativo, por lo que podría ser una causa.
Cuando ejecuto un ciclo para revisar y registrar cada índice de la matriz, en realidad solo registra el índice -1. Al registrar toda la matriz bidimensional, existen los índices -1, 0 y 1. Sin embargo, cuando accedo al índice 0 de dicha matriz, devuelve undefined :
Código utilizado para registrar la matriz
Resultados reales registrados
Está claro que el índice 0 existe en la matriz, pero cuando se accede directamente, no parece existir y un ciclo a través de cada índice no cree que exista el índice 0.
Este es un problema bastante malo ya que ahora el juego volverá a renderizar un montón de lienzos, matando fps y haciendo que el juego no se pueda jugar. No sé por qué sucede esto, y realmente no tengo idea de por qué sucede esto. Esto no sucedía antes y no he tocado el código, pero descubrí que mi fps se estaba muriendo y finalmente descubrí que la causa era la reproducción continua de fragmentos que ya existían.
He intentado algunas cosas, incluyendo:
parseInt()No parece ser fácilmente reproducible ya que no sé la causa, pero intentaré encontrar la razón exacta por la que parece hacer esto.
Actualización: parece funcionar cuando se accede directamente a través de la consola, sin embargo, en la función no funciona.
Ignore los dos registros entre la entrada y la salida, eso se debe a un poco de retraso.
Actualización 2: la longitud de la matriz parece ser negativa, aunque todavía tiene índices positivos.
Actualización 3: acabo de comprobar GitHub Desktop y no he cambiado nada relacionado con la matriz, y no sucede en el código anterior. No sé qué pudo haber hecho que esto sucediera de repente.
Resulta que el "truco útil" para borrar una matriz no funciona: establecer la longitud de una matriz en 0 no siempre la borra. Termina haciendo algo y no parece funcionar correctamente en mi caso.
También resulta que estaba limpiando accidentalmente partes de la matriz.
Lo siento.