Marek.S Opublikowano 30 Września 2007 Udostępnij 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 ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 30 Września 2007 Udostępnij Opublikowano 30 Września 2007 Nie rozumiem, obecnie efektem było by narysowanie 2 linii na sobie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 30 Września 2007 Autor Udostępnij 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. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Września 2007 Udostępnij Opublikowano 30 Września 2007 Repeat'uj rysowanie linii ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 30 Września 2007 Autor Udostępnij Opublikowano 30 Września 2007 Fajnie, ale jak ! ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 1 Października 2007 Udostępnij Opublikowano 1 Października 2007 zwyczajnym loopem... for(i=0;i<100;i+=1) { twój kod;P } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 4 Października 2007 Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Firemark Opublikowano 4 Października 2007 Udostępnij Opublikowano 4 Października 2007 Dalej nie rozumiem oco mu chodzi :D mów jaśniej , bo piszesz jak młody firemark... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marzec Opublikowano 6 Października 2007 Udostępnij 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: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 6 Października 2007 Udostępnij 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. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harrrry Opublikowano 6 Października 2007 Udostępnij 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ć Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 6 Października 2007 Udostępnij 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ć ;) . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harrrry Opublikowano 6 Października 2007 Udostępnij 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 6 Października 2007 Udostępnij 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 . 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ę