cocos2d:如何检测哪个CCLabelTTF被点击?显示AlertView

时间:2012-12-28 17:56:59

标签: cocos2d-iphone touch

我有一个测验类型的游戏。一个问题和4个可能的答案。答案是从Web服务的JSON文件中动态提取的。我有1个问题显示为CCLabelTTF,4个答案(a,b,c和d)也显示为CCLabelTTF。现在,我需要显示一个警报,用于确认用户选择/点击的答案。 - 第一个问题:如何检测答案a,b,c和d?我的意思是用户触及了哪个答案? - 其次,我如何为每个答案分配一个独特的属性?我的意思是我想这样做:

CCLabelTTF *answerA = [CCLabelTTF labelWithString:@"This will be dynamically set" fontName:@"verdana" fontSize:25];

answerA.tag = @"Here goes the unique Identifier for answerA"; /* Is it okay with tag or is there some more good process? I am thinking to do answerA.tag = 0; 0 for incorrect and 1 for correct answers. */

此标签标识符将用于比较正确答案和所选答案,如下所示:

当用户点击Alert中的“YES”时,将进行以下比较:

 if(answerA.tag == @["movies"][i]@["answer"][i]@["status"]) // @["movies"][i]@["answer"][i]@["status"] will either have 0 or 1.

这款游戏还有其他很棒的解决方案吗?就像使用按钮代替文本标签一样?请帮忙。

1 个答案:

答案 0 :(得分:1)

使用CCMenu会更好,

bool ControlsLayer::init() 
{
    CCTTFLabel *ttflabel = [CCLabelTTF labelWithString:@"This will be dynamically set" fontName:@"verdana" fontSize:25]
    CCMenuItemLabel *label = [CCMenuItemLabel initWithLabel: ttflabel];

    CCMenu *menu = CCMenu::menuWithItems(label, NULL);
    menu->setPosition(ccp(windowSize.width/2, controlsLabel->getPosition().y - controlsLabel->getContentSize().height));

    this->addChild(menu, 2);

    return true;
}

void ControlsLayer::backButtonAction(CCObject* pSender)
{
}

https://github.com/clawoo/AsteroidsCocos2D-x/blob/master/Classes/ControlsLayer.cpp