hamtaren Opublikowano 2 Września 2015 Udostępnij Opublikowano 2 Września 2015 Mam dwa obiekty, jeden dziedziczy po drugim i rozszerza funkcjonalność pierwszego, ewentualnie nadpisuje własnym kodem. Obiekt obj_Parent w step event: GML if (keyboard_check_pressed(vk_enter)) show_message("Parent message enter"); if (keyboard_check_pressed(ord('W'))) show_message("Parent message W"); Obiekt obj_Child w step event: GML event_inherited(); if (keyboard_check_pressed(vk_enter)) show_message("Child message enter"); if (keyboard_check_pressed(vk_space)) show_message("Child message space"); Czy da się zrobić tak, żeby obj_Child mógł po wciśnięciu "W" wywołać to co ma obj_Parent pod tym przyciskiem; po wciśnięciu "Enter" wywołać to co jest w obj_Child, a co też istniało w obj_Parent; po wciśnięciu spacji wywołać to co obj_Child ma do tego przypisane? Być może komuś więcej wyjaśni jak zapiszę to w innym kodzie class obj_Parent { public virtual string pressedKeyEnter() { return "Parent keyEnter"; } public string pressedKeyW() { return "Parent keyW"; } } class obj_Child : obj_Parent { public override string pressedKeyEnter() { return "Child keyEnter"; } public string pressedKeySpace() { return "Child keySpace"; } } ... obj_Parent.pressedKeySpace() -> zwraca "Child keySpace" obj_Parent.pressedKeyW() -> zwraca "Parent keyW" obj_Parent.pressedKeyEnter() -> zwraca "Child keyEnter" W GMLu jest ten problem, że to wspólne " if (keyboard_check_pressed(vk_enter)) " bierze tylko z obj_Parent. Mam nadzieję, że ktoś zrozumie o co mi chodzi :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Września 2015 Administratorzy Udostępnij Opublikowano 3 Września 2015 Musiałbyś kod po IF przenieść do eventyu "user defined" i wtedy byś nadpisywał ten event. Inaczej się niestety nie da. Zresztą, to co zaprezentowałeś w pseudokodzie nie jest poprawne względem GM. Poprawnie byłoby tak (chodzi mi o kod GML który dałeś): class obj_Parent { public void stepEvent() { if (keyboard_check_pressed(vk_enter)) show_message("Parent message enter"); if (keyboard_check_pressed(ord('W'))) show_message("Parent message W"); } } class obj_Child : obj_Parent { public void stepEvent() { parent.stepEvent(); if (keyboard_check_pressed(vk_enter)) show_message("Child key enter"); if (keyboard_check_pressed(ord('W'))) show_message("Child key W"); } } Zatem moja propozycja w GML GML if (keyboard_check_pressed(vk_enter)) event_user(0); if (keyboard_check_pressed(ord('W'))) event_user(1); I odpowiednio w eventach user defined 0 i 1 odpowiedni kod :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hamtaren Opublikowano 3 Września 2015 Autor Udostępnij Opublikowano 3 Września 2015 Ok, dzięki Gnysek, będę w domu to sprawdzę, ale z tego co widzę, to chyba udało mi się przekazać to co miałem na myśli i otrzymam pożądany efekt. Edit: Sprawdziłem i działa tak jak chciałem. Dzięki Gnysek jeszcze raz :) 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ę