Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS][Rozwiązany] Problem z odczytaniem wartości z tablicy 2-wymiarowej.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
TKu
Mam problem związany z odczytem wartośći pola w tablicy 2-wymairowej (pole Hit w strukturze) która jest fragmentem strunkury danych.

Budowa struktury:
  1. function Objekt() {
  2. this.Img = new Image();
  3. this.Width = 0;
  4. this.Height = 0;
  5. this.Hit = new Array();
  6. }

Następnie w innej funkcji inicjuje "obiekt" na podstawie tej struktury i usupełniam po kolei, generuje tablice 2-wymiarową i zapisuje do pola Hit na sztywno ja pozycję [1][0] wartość 1. Następnie w konsoli przeglądraki wyświetliłem zawartość pola Hit i wyświetliło bez problemów jego zawartość.

Funkcja z inicjacją obiektu:
  1. function InitObjekt() { //inicjacja teł gry
  2. obj = new Objekt();
  3. obj.Img.src = 'img.png';
  4. obj.Width = obj.Img.width;
  5. obj.Height = obj.Img.height;
  6.  
  7. temptab = new Array(obj.Width/32);
  8. for(i = 0; i < obj.Width/32; i++) {
  9. temptab[i] = new Array(obj.Height/32);
  10. }
  11.  
  12. temptab[1][0] = 1;
  13.  
  14. obj.Hit = temptab;
  15. console.log(obj.Hit[1][0]);
  16. }

Problem jest kiedy proboje wyliczyc wartości X, Y w tablicy czyli:
  1. if(obj.Hit[( p.X / p.Width - 1)][(p.Y / p.Height)] == 1) p.M = 0;

podkreślam że wynikami działąń ( p.X / p.Width - 1) oraz (p.Y / p.Height) są liczby całkowite mieszczące się w ramach szerokości i wysokości tablicy.
i w tym momencie w konsoli wyskakuje error:
TypeError: obj.Hit[( p.X / p.Width - 1)] is undefined

Nie mogę dojść do tego co robię źle.
darko
Upewnij się, że wynikami działań
p.X / p.Width - 1 oraz
p.Y / p.Height
są również liczby całkowite, w przeciwnym wypadku (na double jako indeks) będzie RangeError: invalid array length; aaevil.gif
TKu
Za długo przy tym siedziałem i widocznie mózg mi się wyłączył biggrin.gif
W konsoli wyświetlało mi wartości całkowite, niby typ zmiennych był number, ale zapomniałe i tak o rzutowaniu na INT'a.
Po zrzutowaniu wszystko działą.

  1. if(obj.Hit[parseInt( p.X / p.Width - 1)][parseInt(p.Y / p.Height)] == 1) p.M = 0;
qrooel
Obiekt albo Object ;p
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.