Skocz do zawartości

Rekomendowane odpowiedzi

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:

guif.th.png

 

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

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

udoskonal to a z przyjemnością dodam to do zasobów GMClanu :D

Odnośnik do komentarza
Udostępnij na innych stronach

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

  • Administratorzy

___________________________________________
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

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

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

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

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

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

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

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

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ę...