在cocos2dx中创建菜单项标签时断言失败

Assertion failed while creating Menu Item Label in cocos2dx

本文关键字:断言 失败 标签 菜单项 cocos2dx 创建      更新时间:2023-10-16

我正在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);}}

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

当调用某个函数时,听起来有些前置条件/后置条件失败了。由于您正在处理相当多的对象,我敢打赌您的问题源于MenuItemLabel的创建失败。我建议进一步检查这条线路:

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

现在,我不熟悉这种语言,所以我不能告诉你太多语法,但看看API,我发现应该格式化这行格式:

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

希望我能为你做更多,但希望我能给你指明前进的方向