Nobody Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Crack wystawiając swój SimpleGUI zmotywował mnie do stworzenia własnego :P Póki co niewiele jest w nim opcji, ale może się komuś przydać. Jestem otwarty na propozycje :) ( Okienek nie da się rozszerzać przez kąty, jeszcze nie wiem czemu, ale to naprawię ) Link: https://gmclan.org/up2596_4_GUI.html Screenshot: Aby utworzyć okienko należy stworzyć nowy obiekt, dać mu parenta o_window, a w Create dać kod: GML event_inherited(); create_window( "Nazwa okienka ( wyświetlana w pasku )", Szerokość okienka w pikselach, Wysokość okienka w pikselach, Możliwość rozciągania okna ( true/false ), [ Opcjonalnie ikonka ] ); // Kod na tworzenie elementów element = create_element( Obiekt elementu ( o_text, o_button, o_input ), ID okienka, [ X w okienku, Y w okienku, Szerokość elementu, Wysokość elementu ] ); Uchwyt elementu potrzebny jest do ustawiania w nim zmiennych lub eventów. text ( o_button, o_text, o_input ) - Tekst wyświetlany w przycisku, inpucie lub polu z tekstem. Eventy: o onclick ( o_button ) - Akcja, która ma się wykonać przy kliknięciu ( np. "instance_destroy();" zniszczy przycisk a "with( parent ) instance_destroy();" zniszczy całe okienko razem z elementami ) o onfocus ( o_input ) - To co powyżej, ale tylko przy aktywowaniu inputa o onblur ( o_input ) - Akcja przy deaktywowaniu inputa ( kliknięcie gdzie indziej lub ENTER ) Akcje eventów ustalamy poprzez kod: GML element.onclick = "kod"; // np "instance_destroy();" // lub element.onclick = nazwaskryptu; // bez nawiasów!</span> Każdym elementem można odwołać się do okienka poprzez zmienną parent. W zmiennej text ( o_text ) można umieścić zmienne poprzez wpisanie w tekst "%zmienna%", np. "%global.lol%". W tekście zmienna ta będzie na bieżąco aktualizowana. Myślę, że to już wszystko do opisywania :P Będę ulepszał ten GUI w miarę możliwości i czasu :) Dziękuję za uwagę. EDIT2: Niektórzy mogą mnie oskarżyć za plagiat z innego GUI ze strony, gdzie można też ściągnąć zakazany tu i wielce potrzebny program ( ^^ ). Tak, grafikę okienka wzorowałem na tamtej, grafiki elementów są cudzego autorstwa ale kod jest w stu procentach mój. Jak tylko się podszkolę w grafice lub ktoś będzie chętny mi pomóc to ją zmienię. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Czy jest obsługa eventów? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 GMowych? Raczej musiałbyś zrobić nowy obiekt, dać mu parenta np. o_button, tam porobić eventy i w okienku dodać ten element zamiast podstawowego... Ale mogę zrobić wykonywanie podanego kodu w niektórych eventach ( step, draw, etc. ) ale musiałbyś je wpisywać w stringa :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 udoskonal to a z przyjemnością dodam to do zasobów GMClanu :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 Zaraz dodam scrollbary i pobawię się w input taki jak windowsowy ( żeby można było przewijać tekst i edytować go w każdym miejscu a nie od końca ) ale to za mało do update'u, więc czekam na propozycje ( radio, checkboxy ? ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Lipca 2009 Administratorzy Udostępnij Opublikowano 17 Lipca 2009 ___________________________________________ ERROR in action number 1 of Other Event: User Defined 0 for object o_input: Error in code at line 1: if( width == 0 ) w = parent.wnd_Width - 9; at position 29: Unknown variable wnd_Width Gdy zamykałem drugie okienko. (najpierw to niżej, potem to wyżej) Poza tym - naprawdę ładnie zrobione, chociaż trochę za dużo obiektów. Przydało by się to jakoś zrefaktorować. Pomyśl, jak to jeszcze ulepszyć, usprawnić i myślę, że dodamy na stronę :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 O, w inpucie chyba zapomniałem sprawdzać, czy parent istnieje :P To teraz będę musiał wrzucić wersję bez bugów :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Darlix Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 A u mnie się w ogóle nie otwiera. FATAL ERROR in action number 2 of Create Event for object o_gui: COMPILATION ERROR in code action Error in code at line 2: windowBg = sprite_add_alpha( "window_bg.png", 0, 0, 1, 0, 0 ); at position 13: Unknown function or script: sprite_add_alpha Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 Aaa... GM6 chyba nie obsługuje przezroczystości w obrazkach... EDIT: Nie, chwila... Dałem plik .gmk. W takim razie chyba nie masz wersji PRO. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Darlix Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Wtedy by pisało ze nie mam pro. A tak przy okazji to konwertowałem na gm6 i to samo a potem gmk w gm8 i ten sam błąd. Nie mam wersji pro 7.0 ponieważ prawie niczym się nie różni od 6.1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dżamper Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Wtedy by zaś pisało, że ta funkcja jest tylko w wersji Pro... Dziwne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Lipca 2009 Administratorzy Udostępnij Opublikowano 17 Lipca 2009 W GM8 nie ma tej funkcji. Przyznaj sie, ze nie wypakowałeś :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Darlix Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Wtedy by zaś pisało, że ta funkcja jest tylko w wersji Pro... Dziwne. Jak otwierałem w 6.1 pro i 8.0 beta tez jest pro wiec czemu miałoby mi wywalić że nie mam pro? :o NIe przyznam się ponieważ wypakowałem i skonwertowałem na gm6 po czym otworzyłęm przez GM6.1 i wywaliło mi ten błąd. Nie mam GM7.0 na kompie zainstalowanego wiec postanowiłem otworzyć w GM8.0 i ten sam błąd wywaliło więc co wam nie gra? E: Gnysio, jakiej funkcji? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 Damian nie mam pojęcia co się dzieje. Jednocześnie informuję, że poprzedni błąd z wyłączaniem okienka został naprawiony i dodałem suwak ( scrollbar ), gdy zawartość okienka wykracza poza niego ( na razie tylko w poziomie :P ). Link dalej ten sam :) Enjoy! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Lipca 2009 Administratorzy Udostępnij Opublikowano 17 Lipca 2009 sprite_add_alpha jest w GM8 inaczej skonstruowane z tego co pamietam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 Ale sprite_add_alpha_from_sprite chyba działa na wszystkich wersjach. Jeżeli tak to po prostu wrzucę sprite'y okna i jego alphy do projektu i będzie po kłopocie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Darlix Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Po prostu gm6.1 i 8.0 nie mają funkcji sprite_set_alpha ;/ E: sprite_set_alpha_from_sprite też nie działa. Próbowałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 To zrób se w Edytorze spritów alpha <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Mówie o eventach typu: button.onClick = nazwa_skryptu; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 Uchwyt elementu potrzebny jest do ustawiania w nim zmiennych takich jak: text ( o_button, o_text, o_input ) - Wiadomo onclick ( o_button ) - Akcja, która ma się wykonać przy kliknięciu ( np. "instance_destroy();" zniszczy przycisk a "with( parent ) instance_destroy();" zniszczy całe okienko razem z elementami ) onfocus ( o_input ) - To co powyżej, ale tylko przy aktywowaniu inputa onblur ( o_input ) - Akcja przy deaktywowaniu inputa ( kliknięcie gdzie indziej lub ENTER ) Póki co tyle :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 źle to opisałeś bo zupełnie rozumiem twojego cytowanego tekstu... serio ;P Gdzie to mam użyć, bo te funkcje czy co to jest są bezsensu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 Akcja do wykonania w postaci stringa :P np: onclick = "show_message( ';o' );" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Ok, tyle że ja bym zrobił coś takiego: GML (Create) btn_quit = newButton( "&Quit" ); btn_quit.onClick = "eventQuit"; GML (eventQuit) /** * argument0 - button instance */ if( argument0.text == "Quit" ) { game_end(); } Fajnie co? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 17 Lipca 2009 Autor Udostępnij Opublikowano 17 Lipca 2009 OK, mogę tak zrobić :P Ale po co tworzyć masę funkcji do pojedynczych elementów? Tworzenie zostanie, ale eventy mogę zrobić :) EDIT: Update. Teraz akcję eventów ustalamy poprzez onclick = "kod"; lub onclick = nazwaskryptu; ( bez nawiasów! ) Niestety są małe problemy z inputami, ale jestem w trakcie naprawiania :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 zakładając że zdarzenia to funkcje bez argumentów: skrypt: ShowAlert() GML show_error("dupa blada, sperniczyłeś gre! :0",false) create: GML btn_alert=new(GUI_BUTTON) btn_alert.onClick=ShowAlert // nie, to nie pomylka, dajemy mu bez cudzysllowia, bo to nie string a index skryptu ma przekazac</span> automat obsługi zdarzeń: GML if(ExecEvent(EV_ONCLICK)) if(onClick>=0) script_execute(onClick) tak to robimy :) btw, aż mi się zachciało GUI albo nawet API zrobić xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Lipca 2009 Udostępnij Opublikowano 17 Lipca 2009 Nom ja się pomyliłem, miał być index a nie string ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 19 Lipca 2009 Udostępnij Opublikowano 19 Lipca 2009 btw, aż mi się zachciało GUI albo nawet API zrobić xDXeAPI :D @topic: w porównaniu do twojego, moje to totalna porażka :) 5. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 19 Lipca 2009 Udostępnij Opublikowano 19 Lipca 2009 API czego? ;s Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 19 Lipca 2009 Udostępnij Opublikowano 19 Lipca 2009 dobrze wiesz co miałem na myśli Kofelku :P dla jasności: swego rodzaju automat zdarzeń pokroju WinAPI, tyle że dla GM. Bez sensu, bo przecież GM swoje ma, nie? NIE, bo to do wewnętrznych kontrolek takich jak nobody zaprezentował w swoim GUI :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 19 Lipca 2009 Udostępnij Opublikowano 19 Lipca 2009 Dobrze nie wiem do czego te API. ;s 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ę