Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS][Rozwiązany] Problem z odczytaniem wartości z tablicy 2-wymiarowej.
TKu
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.03.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował TKu 31.07.2012, 12:24:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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; (IMG:style_emoticons/default/aaevil.gif)
Go to the top of the page
+Quote Post
TKu
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.03.2012

Ostrzeżenie: (0%)
-----


Za długo przy tym siedziałem i widocznie mózg mi się wyłączył (IMG:style_emoticons/default/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;
Go to the top of the page
+Quote Post
qrooel
post
Post #4





Grupa: Zarejestrowani
Postów: 306
Pomógł: 42
Dołączył: 25.03.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Obiekt albo Object ;p

Ten post edytował qrooel 31.07.2012, 13:04:08
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 14:10