在我的顶层我有一个'后退按钮'精灵,它应该接收触摸。通常情况下,所有其他触摸应该传递到较低层,但如果此“返回”按钮接收到轻击手势,则应该吞下触摸。
目前,“返回”按钮上的任何触摸也会作为下方图层上的触摸接收。
顶层:
-(id) init {
if ((self = [super init])) {
[self scheduleUpdate];
// Initialize KKInput
KKInput* input = [KKInput sharedInput];
input.gestureTapEnabled = input.gesturesAvailable;
...
}
return self;
}
...
-(void) update:(ccTime)delta
{
KKInput* input = [KKInput sharedInput];
if (input.gestureTapRecognizedThisFrame) {
CCLOG(@"Top layer tap recognized");
if ([self.backButton containsPoint:input.gestureTapLocation]) {
CCLOG(@"Top layer Back Button tap recognized");
}
}
}
下层
-(id) init {
if ((self = [super init])) {
[self scheduleUpdate];
// Initialize KKInput
KKInput* input = [KKInput sharedInput];
input.gestureTapEnabled = input.gesturesAvailable;
...
}
return self;
}
...
-(void) update:(ccTime)delta
{
KKInput* input = [KKInput sharedInput];
if (input.gestureTapRecognizedThisFrame) {
CCLOG(@"Lower layer tap recognized");
}
}
如果我点击“后退”按钮以外的其他位置,输出就是我想要的:
2012-10-16 10:58:03.747 MyApp[13838:707] Top layer tap recognized
2012-10-16 10:58:03.749 MyApp[13838:707] Lower layer tap recognized
但是,如果我点击“返回”按钮,则按钮不会被按钮吞下:
2012-10-16 10:49:23.426 MyApp[13838:707] Top layer tap recognized
2012-10-16 10:49:23.429 MyApp[13838:707] Top layer Back Button tap recognized
2012-10-16 10:49:23.434 MyApp[13838:707] Lower layer tap recognized
答案 0 :(得分:0)
要清除手势状态,您可以将其关闭然后重新打开。如果你在处理第一个点击手势的地方添加它,这应该可以解决问题:
input.gestureTapEnabled = NO;
input.gestureTapEnabled = YES;