Marek.S Opublikowano 30 Września 2007 Opublikowano 30 Września 2007 Hej. Tak się ostatnio zastanawiam... robiłem komuś przykład rysowania lini w gm, i z tąd moje pytanie. Rysuje linie w draw za pomocą draw_line w pozycji start x i y oraz end x i y chcę nakreślić druga linie i czy jest możliwość dodania do końca kodu kolejną linijkę skryptu np draw_line(x_start,y_start,x_end,y_end) i przy jakimś evencie na sam koniec chce dodać kolejne draw_line(x_start,y_start,x_end,y_end) w efekcie: draw_line(x_start,y_start,x_end,y_end) draw_line(x_start,y_start,x_end,y_end) czy jest taka funkcja w gm ?
Tymon Opublikowano 30 Września 2007 Opublikowano 30 Września 2007 Nie rozumiem, obecnie efektem było by narysowanie 2 linii na sobie.
Marek.S Opublikowano 30 Września 2007 Autor Opublikowano 30 Września 2007 No fakt. Ale tym się zajmę później. Jak narazie chciał bym się dowiedzieć jak dodać linijkę kodu na koniec skryptu. ;)
Pieter Opublikowano 1 Października 2007 Opublikowano 1 Października 2007 zwyczajnym loopem... for(i=0;i<100;i+=1) { twój kod;P }
pablo1517 Opublikowano 4 Października 2007 Opublikowano 4 Października 2007 Ale on chce dynamicznie, czyli już w czasie działania gry/programu ... chcesz zrobić paint? Użyj Surface'ów xD
Firemark Opublikowano 4 Października 2007 Opublikowano 4 Października 2007 Dalej nie rozumiem oco mu chodzi :D mów jaśniej , bo piszesz jak młody firemark...
Marzec Opublikowano 6 Października 2007 Opublikowano 6 Października 2007 Jeżeli nie chcesz tych linii za wiele rysować to zrób dla każdej linii oddzielny obiekt. Bo podejrzewam, że zrobiłeś tylko jeden obiekt do rysowania ze skryptem w evencie Draw: draw_line(x_start,y_start,x_end,y_end) Proponuję zrobić oddzielne dwa obiekty. obiekt 1 Będzie tworzył obiekt 2 w (mouse_x,mouse_y) w momencie gdy zostanie naciśnięta globalnie mysz (global left pressed) obiekt 2 kluczowy obiekt Event Create x_start=mouse_x y_start=mouse_y gotowa=false zmienna "gotowa" mówi, czy linia jest już gotowa ;) Event Step if gotowa=false { x_end=mouse_x y_end=mouse_y } Jeśli nie jest gotowa (przycisk nie został puszczony) to linia jest wciąż rysowana do punktu gdzie znajduje się kursor myszy Global Left Released gotowa=true Linia gotowa :) i jeszcze event Draw draw_set_color(c_black) draw_line(x_start,y_start,x_end,y_end) Wszystko działa, tu masz przykład: https://gmclan.org/up2782_11_the_linia_paint.html Jeśli nie chodziło ci o "paintowanie" to użyj poprostu sposobu, że każdy obiekt to linia. Bo rozumiem, że twoim problemem było, że gdy rysowałeś następną to poprzednia znikała? :hmmm:
Pentalinio Opublikowano 6 Października 2007 Opublikowano 6 Października 2007 On chce, że jak zwolnisz klawisz myszy to jest nowa linia. Są dwa sposoby. 1 sposób: Create: sur = surface_create(room_width, room_height); x_start = 0; y_start = 0; x_end = 0; y_end = 0; klik = false; Step: if mouse_check_button(mb_left) { x_end = mouse_x; y_end = mouse_y; } if mouse_check_button_pressed(mb_left) { x_start = mouse_x; y_start = mouse_y; klik = true; } if mouse_check_button_released(mb_left) && (klik) { surface_set_target(sur); draw_line(x_start, y_start, x_end, y_end); surface_reset_target(); klik = false; } Draw: draw_surface(sur, 0, 0); if (klik) draw_line(x_start, y_start, x_end, y_end); Popraw ewentualne błędy. ;)
Harrrry Opublikowano 6 Października 2007 Opublikowano 6 Października 2007 Mu chyba chodzi o to żeby dodać podczas gry akcje do eventa. Kawałek helpa: object_event_add(ind,evtype,evnumb,codestr) To give the object a behavior we must define events for the object. You can only add code actions to events. You need to specify the object, the event type, the event number (use the constants that have been specified before for the event_perform() function). Finally you provide the code string that must be executed. You can add multiple code actions to each event. object_event_clear(ind,evtype,evnumb) You can use this function to clear all the actions for a particular event. Nie chciało mi sie przetłumaczać
Pentalinio Opublikowano 6 Października 2007 Opublikowano 6 Października 2007 Oj, już nie mów jak nie wiesz, oki ? Tylko posty zbędne nabijasz. A żeby nie było offtopu, zaraz editnę posta i napiszę drugi sposób. 2 Sposób Create: lines = 0; Draw: if mouse_check_button_pressed(mb_left) { lines += 1; start_x[lines] = mouse_x; start_y[lines] = mouse_y; } if mouse_check_button(mb_left) { end_x[lines] = mouse_x; end_y[lines] = mouse_y; } for( i = 0; i < lines; i += 1; ) { draw_line( start_x[i], start_y[i], end_x[i], end_y[i] ); } if (lines > 0) draw_line( start_x[lines], start_y[lines], end_x[lines], end_y[lines] ); Wystarczyło tylko pomyśleć ;) .
Harrrry Opublikowano 6 Października 2007 Opublikowano 6 Października 2007 Dodawanie (podczas gry) na końcu eventa Draw dla wszystkich obiektów Jakiśobiekt funkcji rysującej linię: object_event_add ( jakiśobiekt , ev_draw , 0 , 'draw_line(x1,y1,x2,y2);' ); A jak chcesz całkiem usunąć zdarzenie draw (wszystkie akcje i kody jakie w sobie miał też) to piszesz: object_event_clear ( jakiśobiekt , ev_draw , 0 ); @UP: Ten drugi sposób nie zadziała jak on zrobi kilka viewów, bo wtedy zdarzenie draw jest puszczane kilka razy na klatke.
Pentalinio Opublikowano 6 Października 2007 Opublikowano 6 Października 2007 Morrrdo ty moja xD . Nie paplaj głupot, testowałem go. A twój sposób jest dla leni :P .
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ę