2015-04-03 63 views
0

我在cocos2dx中构建了一个游戏,其中我必须创建菜单项标签。我创建它们在一个循环,然后在菜单中添加它们:在cocos2dx中创建菜单项标签时声明失败

auto menuForNumberButtons = Menu::create(); 
    menuForNumberButtons->setPosition(Vec2(0,0)); 
    this->addChild(menuForNumberButtons, 3); 
    for (int yy = 0; yy < 3; yy++) 
    { 
     for (int xx = 0; xx < 3; xx++) 
     { 
      counterOfNumers++; 

      MenuItemLabel *numberButton=MenuItemLabel::create(Label::createWithTTF(String::createWithFormat("%d",counterOfNumers)->getCString(), "arial.ttf", visibleSize.width*0.05), this, menu_selector(BSHSuDokuKeypad::numberButtonPressed)); 
      numberButton->setScaleX(widthOfNumberCell*0.5/numberButton->getBoundingBox().size.width); 
      numberButton->setScaleY(heightOfNumberCell*0.5/numberButton->getBoundingBox().size.height); 
      numberButton->setPosition(Vec2(visibleSize.width*0.005+widthOfNumberCell*xx + numberButton->getBoundingBox().size.width*0.5, visibleSize.height*0.7+ heightOfNumberCell*yy + numberButton->getBoundingBox().size.height*0.5)); 
      menuForNumberButtons->addChild(numberButton);}} 

但是当我点击任何数字。它给我一个错误,说没有调用回调函数,断言失败。 有什么帮助吗?

回答

0

好吧,这听起来像某些先决条件/后置条件失败时,一些函数被调用。既然你处理了很多对象,我敢打赌你的问题来源于MenuItemLabel失败的创建。 我建议这条线的进一步检查:

MenuItemLabel *numberButton=MenuItemLabel::create(Label::createWithTTF(String::createWithFormat("%d",counterOfNumers)->getCString(), "arial.ttf", visibleSize.width*0.05), this, menu_selector(BSHSuDokuKeypad::numberButtonPressed)); 

现在,我不熟悉的语言,所以我不能告诉你很多关于语法,但看着我discovere此行的API格式应格式化:

static MenuItemLabel * create (Node *label, Ref *target, SEL_MenuHandler selector) 

希望我能为雅做多,但希望我指出你在进步的方向

+0

语法是正确的。加上菜单项标签创建很好,即我可以在屏幕上看到它们。问题是什么与menu_selector。反正非常感谢 – nullPointerException 2015-04-03 05:59:37

+0

有趣的是,当你点击其中一个数字时会调用什么方法? – 2015-04-03 06:39:39

+0

numberButtonPressed被称为 – nullPointerException 2015-04-03 07:15:44