Skocz do zawartości

chronologiczny porzadek akcji


gol350

Rekomendowane odpowiedzi

mam wazne pytanie .

 

jak zrobic tak ,zeby dana akcja byla wykonywana tylko wtedy, gdy nastapia dwie lub wiecej akcji ,ale musza one wystapic w porzadku chronologicznym ,takim jak ja chce tzn.

 

podam przyklad:

 

mam dwa pola w roomie. chodzi o to , ze jak klikne myszka na pole_1 , potem na pole_2 to w pole_2 ma mi rysowac sprita , ale nie odwrotnie tzn: jak klikne myszka najpierw na pole_2 potem na pole_1.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
krit:

kliknalem=0

k2=0

 

glob. left pressed:

 

if collision_point(mouse_x,mouse_y,pole1,0,0)

kliknalem=1

k2=1

else

if collision_point(mouse_x,mouse_y,pole2,0,0)

 

kliknalem=2

else{

kliknalem=0

k2=0

}

draw:

if k2 and kliknalem=2{

draw_sprite()

}

 

Sposób niezbyt idealny, ale będzie działał :)

Odnośnik do komentarza
Udostępnij na innych stronach

Ja bym to zrobił inaczej:

 

W create jakiegoś obiektu:

 

GML (Create)
global.klik=0

 

Jeśli klikasz na pole1 to:

 

GML (Step)
if mouse_check_button_pressed(mb_left)

{

 

if global.klik=0

{

 

global.klik=1

 

}

}

 

Jeśli klikasz na pole2 to:

 

 

GML (Draw)
if mouse_check_button_pressed(mb_left)

{

 

if global.klik=1

{

 

draw_sprite(sprite_index,image_index,x,y)

 

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Doublepost, ale jakbym zedytował, to by nikt nie zerknął.(proszę nie banujcie!)

 

Można to jeszcze zrobić tak:

GML
CREATE

kliknalem=0

 

glob. left pressed:

 

if collision_point(mouse_x,mouse_y,pole1,0,0)

kliknalem=1

else

if !collision_point(mouse_x,mouse_y,pole2,0,0)

kliknalem=0

draw pola2:

if kliknalem=1{

draw_sprite()

}

 

Trochę krócej i z jedną zmienną

Odnośnik do komentarza
Udostępnij na innych stronach

Create:

GML
listEvents = ds_list_create();

listEventsId = 0;

 

ds_list_add( listEvents, "show_message( 'akcja namber lan!' );" );

ds_list_add( listEvents, "show_message( 'akcja namber tu!' );" );

ds_list_add( listEvents, "show_message( 'akcja namber fri!' );" );

...

ds_list_add( listEvents, "show_message( 'akcja namber iks!' );" );

 

Step:

GML
if ( mouse_check_button_pressed( mb_left ) )

{

execute_string( ds_list_find_value( listEvents, listEventsId ) );

listEventsId += 1;

}

 

Lepszy sposób -> Timelines.

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