Skocz do zawartości

Podwójne kliknięcie.


Sirluki

Rekomendowane odpowiedzi

Wiem, że to już było tysiące razy, ale dalej się z tym motam - szukałem i dalej nie mam optymalnego rozwiązania. Mianowicie:

 

Jak zrobić (najlepiej w evencie Mouse - left pressed), że kiedy klikne pierwszy raz to spełniona zostaje akcja 1 a kiedy klikne drugi raz, to spełniona zostaje akcja 2.

 

Robiłem to tak:

GML
switch (sprite_index = sprite0)

{

case 0:

image_speed = 0.2

sprite_index = sprite0; break;

case 1:

sprite_index = sprite1

instance_destroy(); break;

}

 

i niezbyt dobrze to działa, tzn. nie usuwa objektu.

 

Proszę o pomoc, bo nie za bardzo wiem jak to zrobic. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Create jakiegoś obiektu ( najlepiej kontrolera ):

GML
global.click=0;

Wciśniecie myszki ( global ):

GML
global.click+=1;

alarm[0]=10;

Alarm[0]:

GML
global.click=0;

A tu sprawdzanie w obiekcie ( wciśnięcie myszki: ):

GML
if(global.clink>1)

{

// gdy wciśniemy

global.click=0;

}

 

W jedną stronę działa, w drugą już nie :(

Odnośnik do komentarza
Udostępnij na innych stronach

if(global.clink>1)

{

// gdy wciśniemy

global.click=0;

}

masz literówkę :P

 

proponuje tak:

GML
//[create]

click = false

 

//[global mouse pressed]

if ( click ){

click = false

//akcja po podwójnym kliknięciu

}

else {

click = true

alarm[0] = 10

}

 

//[alarm(0)]

if ( click ) click = false

Odnośnik do komentarza
Udostępnij na innych stronach

masz literówkę :P

 

proponuje tak:

GML
//[create]

click = false

 

//[global mouse pressed]

if ( click ){

click = false

//akcja po podwójnym kliknięciu

}

else {

click = true

alarm[0] = 10

}

 

//[alarm(0)]

if ( click ) click = false

 

Tzn. jest dobrze, ale chodziło mi o to, że wystarczy kliknąć raz na obiekt i wykonana zostaje akcja 1 a jak klikniesz drugi graz na obiekt, to wykonana zostaje akcja 2. :) Mozesz powiedzieć jak to poprawić w Twoim kodzie? :)

Odnośnik do komentarza
Udostępnij na innych stronach

GML
//[create]

click = false

 

//[global mouse pressed]

if ( click ){

click = false

//akcja po podwójnym kliknięciu

}

else {

//akcja jednego kliknięcia

click = true

alarm[0] = 5

}

 

//[alarm(0)]

if ( click ) click = false

powinno działać :P

 

PS. poprawne użycie switcha:

GML
switch (<warunek>)

{

case <wartosc_1>: <instrukcje_1>; ...; break;

case <wartosc_2>: <instrukcje_2>; ...; break;

...

default: <instrukcje>; // inna od podanych wyżej wartości

}

 

także całość "sprite_index = sprite0" będzie błędem jak już to samo "sprite_index"

i wtedy case sprite0:... case sprite1:... itd ;)

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