• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana scen w Phaser 3 (JS)

Aruba Cloud - Virtual Private Server VPS
0 głosów
157 wizyt
pytanie zadane 5 stycznia 2023 w JavaScript przez xTMx3 Obywatel (1,560 p.)
edycja 5 stycznia 2023 przez xTMx3

Witam,

pisząc swój pierwszy projekt w Phaserze spotkałem kolejny problem. Tym razem dotyczy on zmiany sceny, a właściwie to tego, że sposób, którego użyłem nie działa pomimo, że według przykładów na stronie Phasera i kilku innych stron powinien działać.

Pierwsze dwie sceny mam już gotowe i chcę, aby gra po uruchomieniu startowała ze sceny MenuScreen, na której znajduje się m.in przycisk "Start", który po naciśnięciu na nim lewym przyciskiem myszy powinien zmienić obecną scenę na "InstructionScreen". 

Żeby stworzyć jakąś mniej więcej spójną całość wzorowałem się na jakimś tutorialu z YouTube'a, gdzie autor nagrania utworzył początkowo pliki "index.html" oraz "game.js", a dopiero później dodał następne pliki i sceny. Zrobiłem podobnie, z tą różnicą, że plik "game.js" u mnie nazywa się "main.js". W nim zaimportowane są wszystkie sceny i dodane są do configu.  

W swoim pliku "MenuScreen.js" w sekcji "Update" ustawiłem swój przycisk jako interaktywny, po próbowałem zmienić scenę za pomocą takiego zapisu:

this.startB.on('pointerup', function () { //starB to ten przycisk 
    this.scene.start('InstructionScreen');
}, this);

Efekt końcowy jest taki, że po naciśnięciu przycisku rzeczywiście coś się zmienia, ale nie jest to tym, czym być powinno, ponieważ kiedy kliknę na przycisk Start ekran gry robi się czarny. Nie pokazuje się wtedy dosłownie nic, tak jakby scena na którą próbuję się przełączyć nie istniała. Konsola pod F12 nie pokazuje żadnych błędów. 

Próbowałem dodać "console.log("scena instrukcji");" do pliku "InstructionScreen.js" żeby sprawdzić czy chociaż to zadziała, ale niestety nawet to się nie wyświetla. Poza wcześniej wspomnianą funkcją próbowałem też innego sposobu, a mianowicie poprzez zatrzymanie aktualnej sceny i załadowanie innej, co wyglądało tak:

this.startB.on('pointerup', function() {
  this.scene.stop();
  this.sys.game.scene.start('InstructionScreen');
//w linijce powyżej zamiast .start próbowałem użyć również .switch, ale efekt był ten sam 
}, this);

Taka metoda też nie zadziałała. 

Nie wiem już gdzie zrobiłem błąd i dlaczego to nie chce działać. Czy może ktoś pomóc mi z rozwiązaniem tego problemu? 

Jeżeli nie obejdzie się tutaj bez wysłania kodu, proszę tylko dać znać, z których plików, ponieważ szczerze powiedziawszy nie wiem nawet gdzie problem może leżeć i kod którego z nich powinienem zamieścić. 

To jest cała struktura plików:

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 226 wizyt
pytanie zadane 30 grudnia 2022 w JavaScript przez xTMx3 Obywatel (1,560 p.)
0 głosów
0 odpowiedzi 169 wizyt
pytanie zadane 26 grudnia 2022 w JavaScript przez xTMx3 Obywatel (1,560 p.)
+32 głosów
17 odpowiedzi 3,219 wizyt

93,264 zapytań

142,260 odpowiedzi

322,234 komentarzy

62,582 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...