2012-05-03 3 views
0

Я обрабатываю прикосновения вручную через класс, который содержит каждый осязаемый спрайт. Кроме того, каждое меню - CCLayer, и когда я перехожу из одного меню в другое, я использую CCTransition### и получаю новую сцену.cocos2d Как предотвратить распространение нескольких касаний на предыдущие слои?

Итак, слои «все еще там», и когда я касаюсь одного меню, предыдущий слой также получает его ... например, когда я запускаю игру в новом CCLayer, а затем меню все еще затрагиваются для мульти потрогать ...

Если я использую одним прикосновение, я могу проглотить прикосновения, но игра должна иметь мульти прикосновения ...

Что я могу сделать? Спасибо вам всем!

ответ

1

Вы должны потреблять сенсорное событие в любом слой нуждается. После того, как слой поглотит его, прикосновение больше не будет распространяться на «предыдущие» слои.

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

Употреблять сенсорное событие, вы возвращаетесь YES в методе ccTouchBegan делегата.

EDIT: изменил название метода, чтобы соответствовать CCStandardTouchDelegate

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

но touchbegan не для мультитач, правильно? – Agustin

+0

@Spiegel Отредактированный ответ – mweathers

0

Вы могли бы попытаться использовать свойство

self.isTouchEnabled = NO;

внутри слоя, вы не хотите, чтобы получить штрихи.

Если вы используете объекты CCButton, вам необходимо их отключить.

Я надеюсь, что это помогает ...

Привету Ансельм

1

Вы можете установить приоритет 0 для верхнего слоя и приоритет 1 для слоя под ним, как это.

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate: self priority: 0 swallowsTouches: YES];