Skocz do zawartości

okienka


Cekol

Rekomendowane odpowiedzi

robię sobie do programu okienka takie jak w windowsie lecz niemogę sobie poradzić z ich wybieraniem

oto co mi narazie wyszło:https://gmclan.org/up808_11_okienka.htmlczyli prawie nic niewyszło :(

chodzi mi jak się kliknie na okienko prawe to aby ono było aktywne a inne okienka nieaktywne

I Jeśli jakieś okienko jest pod okienkiem aktywnym to jak się kliknie na okienko aktywne to aby okienko pod nim niezrobiło się aktywne.

 

CHyba wiecie oco mi chodzi :) :) :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Muszę znowu zarzucić trochę sugestii, ale i tak majstruję już prosty przykładzik uwzględniający poniższe punkty. :)

 

1) Nie stosuj collision_rectangle by wyłapywać myszkę nad oknem. Jest to strasznie niewydajne. Zamiast tego warto zastosować prosty trick, a mianowicie nadajesz oknu czarnego sprita wielkości 100x100 pikseli i w create wyliczasz takie image_xscale i image_yscale by sprite był wielkości rysowanego okna. Wtedy powiększa się wbudowana maska kolizji obiektu i będziesz mógł stosować eventy mouse_enter i mouse_leave.

 

2) Warto przetrzymywać id okien w strukturze listy (ds_list_create). Najlepiej by to była globalna lista.

3) Warto przetrzymywać id aktywnego okna w osobnej globalnej zmiennej.

4) Warto przetrzymywać id najwyższego okna pod kursorem w osobnej globalnej zmiennej.

5) Aby wyłapać najwyższe okno kolizji, musisz stworzyć listę priorytetowaną (ds_priority_create). Teraz w oknach dajesz event mouse_enter i w tym zdarzeniu musisz dodac do listy priorytetowanej wartosc id aktualnego okna i priorytet w postaci depth. A na końcu dajesz pobieranie z tej listy wartości id o najwyższym priorytecie i zapisujesz go do globalnej omówionej w punkcie 4.

6) W mouse_leave dajesz analogiczny kod co w pkt. 5 z tym, że z listy priorytetowanej ściągasz aktualne okno (i nie zapomnij o ponownym wyszukaniu najwyższego okna).

 

Przykładzik będzie za paręnaście minut do godziny.

Odnośnik do komentarza
Udostępnij na innych stronach

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

Jedynie 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ę poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...