2009-07-09 21 views
20

Jak mogę wyłączyć wykrywanie dotyku w akcji, która działa, ponieważ nie chcę, aby postać leciała w powietrzu jak superman, jeśli gracz kliknie i kliknie w akcji, postać nigdy nie wyląduje, jeśli kliknie dalej. Znalazłem metodę "isDone", czy jest to związane z tą metodą? kliknięcie odtwarzacza -> akcja (nie można kliknąć w akcji) -> zakończenie czynności -> kliknij ponownie ..... to jest to, czego chcę ~Jak mogę wyłączyć wykrywanie dotyku?

+16

Poważnie, co? – marcc

+20

Teraz chcę również stworzyć grę Supermana. – Nosredna

Odpowiedz

0

Zawsze możesz umieścić przezroczyste UIView na górze wybranego obszaru aby wyłączyć "dotknij wejścia", niech słucha dotknięć i niech je ignoruje. Usuń UIView (lub ukryj go), gdy chcesz, aby dane zostały ponownie odsłuchane.

+0

Dave, jak "wyłączyć" dotknij? Czy słyszysz krany i czy je ignorujesz? – eugene

+0

Tak. Wiem, że to brzmi głupio ... –

+0

Przycisk jest nieco bardziej wydajny. Aby uczynić ją "niewidoczną", po prostu nie zaznaczaj, opcja XIB jest dostosowywana Kiedy jest podświetlona, ​​ale nazwa opcji jest inna. +1 za brak standardowego schematu nazwy firmy Apple! Ta metoda jest przydatna w przypadku wyłączania niestandardowego interfejsu użytkownika (zazwyczaj gry). –

0

Dlaczego nie używacie jakiś (prosty wersji) logiczną pamiętać tj isInAction = true i po zakończeniu działania isInAction = false ...

Więc gdy ktoś kliknie, u używać coś takiego

if (!isInAction) { 
    isInAction=true; 
    try { 
    doYourAction; 
    } catch { 
    ... 
    } finally { 
    isInAction=false; 
    } 
} 

// Kod jest pseudokodami, ponieważ nie zaprogramowałem jeszcze iPhone'a, tylko po to, by zobaczyć, co mam na myśli.

45

Wyłącz interakcje użytkownika w widoku, dopóki działanie nie zostanie zakończone, a następnie włącz je ponownie.

Aby wyłączyć dotykowy

[self.view setUserInteractionEnabled:NO]; 

Aby włączyć dotknąć

[self.view setUserInteractionEnabled:YES]; 

Proszę spróbować być nieco bardziej zwięzłe, co chcesz następnym razem.

0

Być może nie rozumiem twojego pytania, ale czy tego właśnie szukasz?

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [Superman Fly]; 
    self.isTouchEnabled = NO; 
} 

- (void)SupermanLanded{ 
    self.isTouchEnabled = YES; 
} 
1

Po prostu zrobimy szalone przypuszczenie, że mówimy o konkretnej klasie Akcji w Cocos2D. Jeśli to prawda, to powinieneś wiedzieć, że każda Akcja ma Bool "isDone", który możesz sprawdzić, czy to zrobione. Daj mi znać, jeśli o to pytasz, a ja opublikuję przykład, ale istnieje ogromna szansa, że ​​możesz mówić o czymś innym, ponieważ twoje sformułowanie jest tak mylące;)

46

To jest najlepsza odpowiedź na twoje pytanie :

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
+3

+1 Dla nieintuicyjnego, ale niesamowicie działającego rozwiązania. – Mazyod

+0

Ditto. Dziękuję za to – Sway

2

w Swift 2,2

self.view.userInteractionEnabled = false 
0

Swift 3,0

self.view.isUserInteractionEnabled = false 
Powiązane problemy