0

何が悪いのかわかりません。おそらく、より多くのレイヤーを使用しているためですか?
私の他のレイヤー (スライド メニュー グリッド サブクラスがタッチを盗んでいると思います...) // // BGLayer.m // MainProject // // NSSL1 によって 8/30/12 に作成されました。// Copyright (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 に答える