2015-04-03 102 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