![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
Czemu pluje mi, że funkcja nie jest funkcją? Dodam, że jeśli umieszczę jej wywołanie poza forEach normalnie działa.
Błąd: Uncaught TypeError: this.drawInventory is not a function |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przed tym forEach zrób var self = this; i w funkcji używaj self zamaist this. Bo this w tej funkcji to coś innego niż poza nia.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Żeby nie zakładać nowego tematu, w obiekcie mam zdefiniowane zmienne, this.name ... itd, w funkcji chce nadpisać te zmienne lecz coś nie działa.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
To samo co wyżej, this w funkcji którą podajesz w done nie dot. tego obiektu tylko ajaxa. Musisz zrobić np. var self = this; przed $.ajax a w funkcji używać self zamiast this.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Niestety nadal nie nadpisuje, mój cały kod:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to napisał w ten sposób:
Pisałem z palca, mogą być literówki. Jak nie działa, to sprawdź czy na pewno otrzymujesz dane, jaki mają format itp. Zrób console.log(data) i pokaż co tam trzymasz. -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
No. I co teraz zrobisz? Jakieś pomysły?
-------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Szczerze to średnio. Nie mam pojęcia.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok. To wywał options z argumentu i przypisz domyślne wartości dla name i level tj. this.name = null; this.level = 0;
-------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Kurcze, no juz w morde nie wiem, jak nie nadpisywało tak nie nadpisuje.
Jakieś pomysły? Ten post edytował MeGusta 20.08.2016, 13:22:16 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Linijka 34 wykona się wcześniej niż 17,18, 19, itd. Zapytanie AJAX trochę trwa, a skrypt wykona się bardzo szybko.
-------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Jak mógłbym rozwiązać ten problem aby działało to w ten sposób w jaki chce.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Z konstruktora usuń this.init();
Do init: function() dodaj parametr (callback) np. onDone i wywołaj go po wyczytaniu danych. Wywołaj init po utworzeniu obiektu Player i w parametrze umieść funkcje w której sobie pobierasz name tj. player.init(function() { console.log(player.getName()); }); Ten post edytował markuz 20.08.2016, 14:23:46 -------------------- |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Całe jquery 3 bardzo mocno opiera się na Promise. Jeżeli zaimplementujesz u siebie wtedy pierwszym krokiem będzie jquerowy ajax albo natywne fetch do pobrania danych i dopiero wyciąganie danych o użytkowniku.
-------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 6.07.2015 Ostrzeżenie: (10%) ![]() ![]() |
Panowie, nie wiem czy dobrze zrozumiałem, ale zrobiłem coś takiego, działać działa, ale pytanie czy to jest poprawnie?
W funkcji getData w callbacku wywołuje funkcje która będzie (jest) odpowiedzialna za wyświetlanie już pobranych zmiennych, tak myślę i na dłuższą drogę to chyba nie ma sensu, to funkcji korzystających z tych zmiennych będzie dużo więcej, a callbacka do każdej nie bd dodawał. Ktoś poratuje?
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czy chcesz aby obiekt Player sterował też zachowaniem gry - tak jak to napisałeś (metoda loadGame w Player). Jeżeli tak, to może warto w ogóle porzucić obiekty albo zrobić 1 o nazwie Game ew. wywalić logikę Game do nowego obiektu Game a Player zostawić jak jest.
Co do pytania to przenieś wywołanie metody self.loadGame(); do init() po przypisaniu name i level, getData ma służyć tylko do komunikacji z engine.php. -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 13:48 |