Cekol Opublikowano 27 Sierpnia 2006 Udostępnij Opublikowano 27 Sierpnia 2006 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 Więcej opcji udostępniania...
Hanjuso Opublikowano 27 Sierpnia 2006 Udostępnij Opublikowano 27 Sierpnia 2006 Musisz zrobic tak, zeby po kliknieciu 'przeleciec' po wszystkich okienkach i sprawdzic czy kursor na nim jest, i wybrac jako aktywne te, ktore ma wieksze depth. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cekol Opublikowano 27 Sierpnia 2006 Autor Udostępnij Opublikowano 27 Sierpnia 2006 no ale jeśli pod prawym okienkiem będzie okienko które ma większee id od tego który jest nad nim to i tak| jeśli klikniemy na prawe okienko to to pod nim zrobi się aktywne :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 27 Sierpnia 2006 Filar Społeczności Udostępnij Opublikowano 27 Sierpnia 2006 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę