2012-05-03 3 views
0

Je manipule les touches manuellement à travers une classe qui contient chaque sprite touchable. En outre, chaque menu est un CCLayer, et quand je change d'un menu à l'autre, j'utilise le CCTransition### et obtiens la nouvelle scène. Donc, les calques sont "toujours là" et quand je touche un menu, le calque précédent le reçoit aussi ... comme quand je démarre le jeu dans un nouveau CCLayer, et les menus sont toujours affectés pour le multi toucher ...cocos2d comment empêcher la propagation multi-touch aux couches précédentes?

Si je touche unique, je peux avaler la touche, mais le jeu doit avoir multi-touch ...

Que puis-je faire? Merci à tous!

Répondre

1

Vous devez consommer l'événement contact quelle que soit la couche a besoin. Après qu'une couche le consomme, le toucher ne sera plus propagé aux couches "précédentes".

http://www.cocos2d-iphone.org/api-ref/0.9.0-beta/_c_c_touch_delegate_protocol_8h_source.html

Pour consommer un événement touche, vous revenez OUI dans la méthode déléguée ccTouchBegan.

EDIT: nom de la méthode modifiée pour correspondre CCStandardTouchDelegate

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
    if (condition) 
     return YES; 
    else 
     return NO; 
} 
+0

mais le touchbegan n'est pas pour multitouch, non? – Agustin

+0

@Spiegel Edited answer – mweathers

0

Vous pouvez essayer d'utiliser la propriété

self.isTouchEnabled = NO;

dans la couche, vous ne voulez pas recevoir de touches. Si vous utilisez CCButton objets, vous devez les désactiver.

J'espère que cela aide ...

Salutations Anselm

1

Vous pouvez configurer la priorité à 0 pour la couche supérieure et la priorité à 1 pour la sous-couche comme ça.

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate: auto-priorité: 0 swallowsTouches: YES];

Questions connexes