0

我不知道出了什么问题,也许是因为我使用了更多层?
我认为我的另一层(滑动菜单网格子类正在窃取触摸...) // // BGLayer.m // MainProject // // 由 NSSL1 于 2012 年 8 月 30 日创建。// 版权所有 (c) 2012 MyCompanyName。版权所有。//

#import "BGLayer.h"
#import "GameManager.h"
#import "MainMenuLayer.h"

@interface BGLayer() 
-(void)displayBGMenu;
@end

@implementation BGLayer

-(void)backtomenu:(CCMenuItem*)itemPassedIn{
    CCLOG(@"why I can't reach here?");
    [[GameManager sharedGameManager] runSceneWithID:kMainMenuScene];} 
-(id)init {
    self = [super init];
    if (self != nil) {
        self.isTouchEnabled=YES;

        [self displayBGMenu];

    }
    return self;
}
    -(void)displayBGMenu{
        NSString* backLabelstring = [NSString stringWithFormat:@"Back to Menu"];
        CGSize screenSize = [CCDirector sharedDirector].winSize;
        //Shadow
        CCLabelTTF *backLabel = [CCLabelTTF labelWithString:backLabelstring fontName:@"Marker Felt" fontSize:32];
        backLabel.position=CGPointMake(screenSize.height*0.5f, screenSize.width*0.1f);
        backLabel.color = ccBLUE;

        CCMenuItem* backbtnitem=[CCMenuItemLabel itemWithLabel:backLabel target: self
                                                      selector:@selector(backtomenu:)];
        [backbtnitem setTag:21];
        menu = [CCMenu menuWithItems:backbtnitem ,nil];
        menu.position = CGPointMake((screenSize.width / 2), screenSize.height*0.1f);
        menu.tag = 200;
        [self addChild:menu z:20 tag:200];



    }



@end
4

1 回答 1

0

我遇到了层在同一类型的类中吞咽触摸的问题,为了避免这种情况,有人建议我在网格按钮项类的 init 方法中添加它:

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1 swallowsTouches:YES];

效果是调用此方法的类不会贪婪地检测父层触摸检测器,只检测其区域内的触摸,并允许用户以平滑的方式滚动菜单以及按下父级中的其他项目层(例如您的菜单)。

于 2012-09-02T16:11:36.713 回答