DarkLiquidus Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Witam! Jeszcze nie zauważyłem, żeby ktoś na tym forum zgłosił taki problem. Mam duży problem z funkcją draw w game makerze. Po prostu mi ona ni działa. W obojętnie jakiej grze otwieram okno jakiegoś obiektu, tworzę eventa press Space i do niego piszę np. takiego skrypta: draw_text(60,60,'Punkty gracza 2'); Niby po wciśnięciu spacji na współrzędnych x=60 oraz y=60 powinien pojawić się napis: Punkty gracza 2. Niestety, ale nic się nie pojawia. Próbowałem to robić także na klockach. Zrobiłem eventa press Space, a następnie wstawiłem klocka draw text. Napisałem w nim jakiś tekst, lecz i tak w grze po wciśnięciu spacji nic się nie pojawiło. Ustawiałem nawet depth obiektu na -10000, żeby był na samym wierzchu, ale to i tak nic nie dało. Proszę o pomoc!!! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CTRL Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 GML (draw) if keyboard_check(vk_space) then draw_text(x,y,str) pomyślunek +1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DarkLiquidus Opublikowano 17 Maja 2010 Autor Udostępnij Opublikowano 17 Maja 2010 Zrobiłem to co powiedziałeś, lecz tak czy siak nic się nie pojawia... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Obiekt wstawiony do rooma ? (często jest błąd, a obiektu nie ma w roomie -_-) E: A jeśli we wszystkim Ci się tak dzieje to może wina GMa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DarkLiquidus Opublikowano 17 Maja 2010 Autor Udostępnij Opublikowano 17 Maja 2010 Nie działa mi dosłownie nic z całej funkcji draw. Nie działa mi ani draw sprite, ani draw backgound, ani draw text. Mam game makera 8.0 Pro, więc nie powinno być takich problemów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Jeśli masz cracka to mogą występować problemy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programistagd Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Z tego co napisałeś używasz tego w różnych eventach. Funkcje związane z draw powinieneś używać tylko w evencie Draw. Tam możesz dać ten kod: GML if keyboard_check(vk_space) {draw_text(x,y,str)} Jeśli jednak konicznie chcesz w innym evencie, to po poleceniach rysowania pokombinuj z funkcjami: GML screen_redraw() screen_refresh() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
micha_i Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Przecież każdy wie(przynajmniej ja), że przy draw_text() trza użyć set_font() i set_color():)HALOOO... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Micha_i, jak nie masz pojęcia, to siedź cicho. Powiedziałeś jak najbardziej źle. Z tego co napisałeś używasz tego w różnych eventach. Funkcje związane z draw powinieneś używać tylko w evencie Draw. Tam możesz dać ten kod: ... Potwierdzam, rysowanie dajemy wyłącznie w evencie DRAW. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Przeciez kazdy powinien wiedziec (przynajmniej 2x@up), ze przed uzyciem funkcji draw_set_color() i draw_set_font(), czcionka jest ustawiana na Arial 12, a kolor na c_black HALOOO... Co do tematu: funkcji zaczynajacych sie od Draw nie mozna uzywac w evencie innym niz... Draw :) Radze zrobic cos takiego: Create: GML czy_nac = -1 Press Space: GML czy_nac = !czy_nac Draw: GML if(czy_nac) draw_text(60,60,'Punkty gracza 2') Zmienna czy_nac bedzie odpowiadac za sprawdzanie, czy Spacja zostala nacisnieta. Mam nadzieje, ze zadziala, bo nie mam jak sprawdzic :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 mozna uzyc nie tylko w draw ale trzeba uzyc te funkcje ktore juz podal programistagd. Wiec tak czy siak jak nie chcesz sie bawic dawaj w draw w ivie z keyboard_check_pressed. Pozdro Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Muuuuuczek, a nie lepiej od razu w Draw? GML var pisz; pisz = false; // Dałem to tylko dlatego, żeby raz kliknąc, a potem ciągle żeby pisało... if (keyboard_check_pressed(vk_space) && pisz = false { draw_text(60,60,'Jakis dowolny text'); pisz = true; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 @Dawka: wiem o tym, ale uznalem, ze tutaj nie bedzie to potrzebne. @VaDeUrU: nie lepiej, poniewaz zmienna zmienia sie w czasie gry, a ustawiajac caly czas w Draw na false wiele sie nie zwojuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
micha_i Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 u mnie w innym evencie działają funkcje typu draw(), i u mnie trzeba dać set-y soory bardzo :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Przecież każdy wie(przynajmniej ja), że przy draw_text() trza użyć set_font() i set_color():)HALOOO... halooooo... ty gówno wiesz... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MagnusArias Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 Tego używamy tylko wtedy, jeśli chcemy zmienić czcionkę i/lub jej kolor, ewentualnie ustawienie :P Btw, Pieter, coś ty sobie ustawił nad rangą o_O Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Maja 2010 Administratorzy Udostępnij Opublikowano 17 Maja 2010 Standartowo po zdarzeniach step danego cyklu plansza jest od nowa wyrysowywana na ekranie. Ale w niektórych przypadkach potrzebujesz odświeżyć ekran w innych momentach. Przykładowo, gdy usypiasz działanie programu na jakiś czas, chciałbyś odświeżyć wygląd na ekranie by znalazła się tam stosowna informacja. Również, gdy gra wyświetli tekst i będzie czekać na wciśnięcie klawisza przez gracza potrzeba odświeżyć obraz na ekranie (w obu przypadkach działanie programu i wykonywanie jakichkolwiek zdarzeń będzie wstrzymane na ten czas). Są dwa sposoby aby to zrobić: * screen_redraw() Przerysowuje obraz wywołując wszystkie zdarzenia Draw wszystkich instancji. * screen_refresh() Odświeża ekran dorysowując rzeczy do istniejącego już na ekranie obrazu (nie wykonuje zdarzeń Draw). Aby zrozumieć drugą funkcje, musisz zrozumieć jak działa rysowanie na ekranie. Wewnątrz pamięci jest obraz na którym następuje rysowanie. Tego obrazu nie widzisz na ekranie. Na końcu zdarzeń step, po wykonaniu zdarzeń draw, obraz na ekranie zastępowany jest obrazem wewnętrznym (nazywa się to podwójnym buforowaniem). Pierwsza funkcja odświeża wewnętrzny obraz i nakłada go na ten widoczny na ekranie. Druga funkcja jedynie dorysowuje obraz do tego co już na ekranie. Teraz wiesz dlaczego nie możesz używać akcji rysowania (draw_?) w zdarzeniach innych niż Draw. Narysują one coś na wewnętrznym obrazie, ale nie będzie tego widać na ekranie, bo gdy następuje wywołanie zdarzenia Draw (jest ono ostatnie w kolejce) rysowane jest najpierw tło (background), a potem na nim wszystko to co w zdarzeniu draw, zakrywając to co wyrysowałeś wcześniejszymi zdarzeniami. Ale gdy użyjesz screen_refresh(), do obrazu widocznego już na ekranie dorysowana zostanie nowa zawartość. Dla przykładu, jakiś skrypt może wypisać na ekranie tekst, odświeżyć ekran (dorysowując tym samym tekst), oraz poczekać aż gracz wciśnie klawisz, jak w poniższym kodzie: { draw_text(room_width/2,100,'Press any key to continue.'); screen_refresh(); keyboard_wait(); } Pamiętaj jednak, że rysując w zdarzeniu innym niż Draw, rysujesz na obrazie ekranu, a nie w widoku! Tak więc podajesz współrzędne na ekranie, a nie względem widoku. Uważaj, używając tej techniki. Pamiętaj też, że odświeżenie ekranu zajmuje trochę czasu i im więcej razy wykonujesz je kodem, tym większa szansa, że gra zacznie zwalniać. Gdy sam sterujszesz rysowaniem w ekranie może być przydanym aby NIE wykonywać wcale zdarzeń Draw. Np. możesz chcieć odświeżać planszę co 5 kroków. Do tego jest funkcja: * set_automatic_draw(value) Ustala czy wykonywać zdarzenie Draw automatycznie (true, domyślnie) czy nie (false). Na koniec jest funkcja która pozwoli synchronizować rysowanie z częstotliwością odświeżania monitora: * set_synchronization(value) Ustala synchronizować rysowanie z częstotliwością odświeżania monitora:. Możesz także wymisić czekanie na następną pionową synchronizację używając następującej funkcji: * screen_wait_vsync() Czeka na następną pionową synchronizację monitora. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 17 Maja 2010 Udostępnij Opublikowano 17 Maja 2010 u mnie w innym evencie działają funkcje typu draw(), i u mnie trzeba dać set-y Ok, udowodnij. Niestety to zwykłe kłamstwo. Fail x2. 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ę