У меня есть 2 года опыта работы в cocos2d, но сегодня начал cocos2d-x. Я только что написал derrived menu button class, который не запускает какой-либо метод по умолчанию, например onEnter, selected и все.Cocos2d-x onEnter и другие методы по умолчанию не называются
Вот мой код:
//MyButton.h
#include <stddef.h>
#include "cocos2d.h"
using namespace cocos2d;
class MyButton : public CCMenuItemSprite
{
public:
void onEnter();
void selected();
};
//MyButton.mm
void MyButton::onEnter()
{
CCPoint pos = this->getSelectedImage()->getPosition();
CCSize size = this->getSelectedImage()->getContentSize();
this->getSelectedImage()->setPosition(ccp(pos.x+size.width*0.5f, pos.y+size.height*0.5f));
this->getSelectedImage()->setAnchorPoint(ccp(0.5f,0.5f));
}
void MyButton::selected()
{
if (isEnabled())
{
if (this->getSelectedImage())
{
CCScaleTo *scale = CCScaleTo::create(0.5f, 1.3f);
this->getSelectedImage()->runAction(scale);
}
}
}
MyButton * MyButton::create(CCNode* normalSprite, CCNode* selectedSprite, CCObject* target, SEL_MenuHandler selector)
{
MyButton *btn = (MyButton*)CCMenuItemSprite::create(normalSprite, selectedSprite,target, selector);
return btn;
}
// Вот код, который создает кнопку
CCSprite *start_1 = CCSprite::createWithSpriteFrameName(FRAME_MM_START);
CCSprite *start_2 = CCSprite::createWithSpriteFrameName(FRAME_MM_START);
MyButton *btnPlay =(MyButton*) MyButton::create(start_1,
start_2,
this,
menu_selector(MyMainMenu::playGame));
btnPlay->setPosition(ccp(mS.width*0.5f, mS.height*0.5f));
btnPlay->mMaxScale = 1.2f;
CCMenu* menu = CCMenu::create();
menu->setAnchorPoint(ccp(0,0));
menu->setPosition(ccp(0,0));
this->addChild(menu, 1);
menu->addChild(btnPlay);
метод подписи правильны, и Вы проверили, что супер метод вызывается? – LearnCocos2D
Как проверить, я использовал, как в Cocos2d-iphone, что является альтернативой onEnter? – iPhoneProcessor
тест, установив точку останова в методе супер-класса onEnter – LearnCocos2D