0

どのレベルが選択されているかを把握するために、選択されたボタンの情報を置き換えられたシーンに共有したいのですが、どうすればよいですか?

CCLabelBMFont *label = [CCLabelBMFont labelWithString:@"Lavel_2" fntFile:@"font.fnt"];
        CCMenuItemLabel *titem = [CCMenuItemLabel itemWithLabel:label target:self selector:@selector(sceneLoader:)];
        CCMenu *menu = [CCMenu menuWithItems: titem, nil];
        menu.position = ccp(screenSize.width/2, screenSize.height/2);
        [self addChild:menu];


- (void)sceneLoader:(id)sender {
    [[CCDirector sharedDirector] replaceScene: [GameLayer scene]];
}
4

3 に答える 3

0

シーン用に個別のイニシャライザを作成します。または、列挙型を持つ少なくとも 1 つ:

[[GameLayer alloc] initWithButton:kSceneLoaderButton];
于 2012-12-17T23:18:52.130 に答える
0

アイテムにタグを付けてから、タグを GameLayer に設定します

このようなもの...

titem.tag = 777;

...

- (void)sceneLoader:(CCNode)sender {
    GameLayer *gameLayer = [GameLayer scene];
    gameLayer.gameLevel = sender.tag;

    [[CCDirector sharedDirector] replaceScene: gameLayer];
} 
于 2012-12-17T14:14:07.600 に答える
-1

その種の操作には、シングルトンを使用します

file.h

@interface YourClassName : NSObject
+ (id)sharedInstance;
@property (nonatomic,retain) NSString * selectedLevel;

file.m

@implementation YourClassName
@synthesize selectedLevel;
+ (id)sharedInstance {
    static YourClassName *sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

- (id)init
{
    self = [super init];
    if (self) {
        selectedLevel = [NSString string];
    }
    return self;
}

そして、あなたがそれを使用したい場合は、コール[[YourClassName sharedInstance] selectedLevelまたはセットのために[[YourClassName] setSelectedLevel]

それがあなたを助けることを願っています。

于 2012-12-17T20:50:06.023 に答える