• 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)

Object Storage Arubacloud
0 głosów
133 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ź 135 wizyt
pytanie zadane 30 grudnia 2022 w JavaScript przez xTMx3 Obywatel (1,560 p.)
0 głosów
0 odpowiedzi 110 wizyt
pytanie zadane 26 grudnia 2022 w JavaScript przez xTMx3 Obywatel (1,560 p.)
+32 głosów
17 odpowiedzi 2,642 wizyt

92,669 zapytań

141,567 odpowiedzi

320,033 komentarzy

62,034 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...