Skocz do zawartości
  • Ogłoszenia

  • Gdzie świętować urodziny GMCLANu   31 użytkowników zagłosowało

    1. 1. Gdzie świętować urodziny GMCLANu


      • Warszawa (bo w centrum)
      • Szczecin (bo tam mieszka Ranma i narodził się GMCLAN)

    Żeby zagłosować w tej ankiecie, prosimy się zalogować lub zarejestrować. Zobacz temat
  • 0
hgter

Jak rozwiązujecie okna dialogowe?

Pytanie

Pytanie jak w temacie. Jak rozwiązujecie w grach pokazywanie okien dialogowych? (mam na myśli takie okna z pytaniami do użytkownika np. czy na pewno chcesz skończyć grę? itp. Nie chodzi mi tu o okna z dialogami do np. rpg).

 

Korzystacie z jakichś rozszerzeń?

 

A jeżeli sami to robicie to jak to u Was wygląda?

 

Zakładam takie typowe okno z jakimś komunikatem/pytaniem i jeden/dwa przyciski, których kliknięcie wykona określoną akcję.

 

Tak myśląc widzę kilka podejść:

 

1) Oddzielny obiekt dla każdego okna i dla przycisków (może być tylko okno a przyciski opisane w kodzie okna a nie oddzielne obiekty)

 

2) Jak wyżej co do okna, ale dla przycisków dodatkowo jeden obiekt parent z zdefiniowaną mechaniką i dla każdego przycisku nowy, ale tylko z dwoma eventami: create (gdzie jest nazwa przycisku) i event_user0, w którym będzie to co przycisk zrobi. 

 

3) Jeden obiekt (lub dwa jeżeli przycisk oddzielnie) wywoływany przez skrypt "konstruktor" (z przeciążaniem) w którym podamy wszystkie parametry, do tego skrypt destruktora i oddzielny skrypt z switch case z wpisanymi wszystkimi wykorzystywanymi w programie reakcjami na kliknięcie (wartość dla case będzie podawana w konstruktorze). 

 

Na chwilę obecną korzystam z 2 bo miało być jedno/dwa okna. Nagle zrobiło się więcej i nie bardzo chce mi się już pisać wariant 3, ale w przyszłości pójdę w tym kierunku - chyba, że znacie coś sensownego żeby nie wymyślać koła na nowo?

 

 

 

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Ja mam jeden obiekt na całą grę którzy potrafi kolejkować okna i każde z g przyjmuje parametry jaka ma być treść, ile przycisków i co mają robić. Rysuje także ten obiekt

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

A jak technicznie przekazujesz kod, który ma się wykonać po wciśnięciu przycisku?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
1 godzinę temu, hgter napisał:

A jak technicznie przekazujesz kod, który ma się wykonać po wciśnięciu przycisku?

 

Create:

onClick = scriptName

 

On Mouse click:

script_execute(onClick); // to samo co napisać onClick();

 

I sprawa załatwiona. Każda akcja jest wtedy skryptem a obiekt wystarczy jeden. Potem tworzysz okno tak:

with (instance_create(0,0,objWindow)) { onSubmit = scriptEndGame; onCancel = scriptDestroySelf; }

=========

 

Edit: druga moja wersja jest taka, że robię jedną zmienną:

action = scriptName;

 

a potem wywołuję ten skrypt z nazwą przycisku jaki został naciśnięty (albo radio button, albo cokolwiek)

script_execute(action, "ok");

 

a wtedy w tym skrpycie:

switch(argument0) {

case "ok": instance_destroy(); break;

case "toggle": window_set_fullscreen( ! window_get_fullscreen()); break;

}

itd.

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
2 godziny temu, gnysek napisał:

 

 

 

 

 

Ok fajne, dzięki. Druga wersja chyba bardziej mi podejdzie. Zrobię sobie skrypt np. "okno" z jednym argumentem na nazwę skryptu opisującego okno (i może drugim opcjonalnym np. gdyby jedno okno chciało wywoływać drugie i coś do niego przekazać). W switchu będą akcje przycisków tak jak napisałeś, ale jeszcze będzie case np. "konfiguracja", który wywoływany przez obiekt okna będzie zwracał wszystkie dane typu wielkość okna, grafiki, tekst w oknie, nazwy przycisków itp. W miarę pojawiania się zapotrzebowania na bardziej skomplikowane rzeczy będę mógł rozwijać główny obiekt, ale zawsze pozostanie wstecznie kompatybilny. 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×