2009-07-09 17 views
20

¿Cómo puedo desactivar la detección táctil dentro de la acción que se está ejecutando, porque no quiero que el personaje vuele en el cielo como un superhombre si el jugador hace clic y hace clic dentro de la acción, el personaje nunca aterrizará si siguen haciendo clic. Encontré el método "isDone", ¿está relacionado con este método? reproductor clic -> acción (no se puede hacer clic dentro de la acción) -> acabado de acción -> haga clic de nuevo ..... que es lo que quiero ~¿Cómo puedo desactivar la detección táctil?

+16

serio, ¿qué? – marcc

+20

Ahora también quiero hacer un juego de Superman. – Nosredna

Respuesta

0

Siempre se puede poner un UIView transparente sobre la parte superior de la zona que desee para "deshabilitar" la entrada de toque, haga que escuche los grifos y haga que los ignore. Elimine UIView (u ocúltelo) cuando desee que se vuelva a escuchar la entrada.

+0

Dave, ¿cómo "desactivar" el toque? hazlo para escuchar los grifos y haz que los ignore? – eugene

+0

Sí. Sé que suena tonto ... –

+0

Un botón es un poco más eficiente en esto. Para que sea "invisible", simplemente haga que no resalte, la opción XIB se ajusta cuando esté iluminada, pero el nombre de la opción es diferente. +1 por la falta de un esquema de nombre estándar de Apple Este método es útil para deshabilitar la IU personalizada (juegos usualmente) –

0

¿Por qué no utilizar algún tipo de (versión simple) booleano que recordar es decir isInAction = true y después de la acción terminada isInAction = false ...

Así que cuando alguien hace clic, el uso de u algo así como

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

// El código es una especie de pseudocódigo, porque aún no he programado para el iPhone, solo para visualizar lo que quiero decir.

45

Desactive las interacciones del usuario en su vista hasta que la acción finalice y vuelva a habilitarla.

Para desactivar toque

[self.view setUserInteractionEnabled:NO]; 

Para habilitar toque

[self.view setUserInteractionEnabled:YES]; 

Por favor, tratar de ser un poco más concisa de lo que quiere la próxima vez.

0

Quizás no entendí tu pregunta, pero ¿es esto lo que estás buscando?

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

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

Sólo va a hacer una suposición salvaje que se está hablando de la clase de acción específico en Cocos2D. Si eso es cierto, entonces debes saber que cada Acción tiene un Bool "isDone" que puedes verificar para ver si está hecho. Avísame si eso es lo que estás preguntando y publicaré un ejemplo, pero hay una gran posibilidad de que estés hablando de otra cosa porque tu redacción es tan confusa;)

46

Esta es la mejor respuesta a tu pregunta :

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
+3

+1 Para la solución contra-intuitiva, pero increíblemente funcional. – Mazyod

+0

Ídem. Gracias por eso – Sway

2

En Swift 2,2

self.view.userInteractionEnabled = false 
0

Swift 3,0

self.view.isUserInteractionEnabled = false 
Cuestiones relacionadas