1

明らかな何かが欠けていると思いますが、CCMenuItemFont のラベルを取得する方法がわかりません。

背景 iPad 用のシンプルなハングマン ゲームを作成しています。次の推測を入力するために、26 個のボタン (アルファベットの各文字に 1 つ) を UI に追加し、それらすべてを同じイベント ハンドラーに接続しました。

ここで、イベント ハンドラー内で、ボタンのラベルを取得して現在の推測を更新したいと考えていますが、CCMenuItemFont は明らかにtextorに応答しませんlabel

問題 - CCMenuItem のラベルを取得するには、どのような方法を使用できますか?

コード ボタンを作成するためのコード:

-(void)addButtons {
    NSArray* charArray = [NSArray arrayWithObjects:
      @"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",
      @"L",@"M",@"N",@"O",@"P",@"Q",@"R",
      @"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z", nil];
    [CCMenuItemFont setFontName:@"Marker Felt"];
    [CCMenuItemFont setFontSize:45];

    NSMutableArray* buttonArray = [NSMutableArray array];
    for (unsigned int i=0; i < [charArray count]; ++i) {
      CCMenuItemLabel* buttonMenuItem = [CCMenuItemFont 
        itemWithString:(NSString*)[charArray objectAtIndex:i] 
        target:self selector:@selector(buttonTapped:)];
      buttonMenuItem.color = ccBLACK;      
      buttonMenuItem.position = ccp(60 + (i/13)*40, 600 - (i%13)*40);
      [buttonArray addObject:buttonMenuItem];       
    }
    CCMenu *buttonMenu = [CCMenu menuWithArray:buttonArray];
    buttonMenu.position = CGPointZero;
    [self addChild:buttonMenu];
}

そしてイベントハンドラ:

- (void)buttonTapped:(id)sender {
    // Get a reference to the button that was tapped
    CCMenuItemFont *button = (CCMenuItemFont *)sender;
    [_guess addObject:[button text]]; // this throws an exception because text is the wrong method
    [self paintCurrentGuess];
}
4

1 に答える 1

2

CCMenuItemLabelメニューに aではなく aを追加していますCCMenuItemFont(実際には最初のものを拡張します)。どちらの場合も、labelテキストを含む内部にアクセスする必要があります.-

CCMenuItemLabel *button = (CCMenuItemLabel *)sender;
NSString *label = button.label.string;
于 2013-10-16T21:30:00.857 に答える