저는 2 년 동안 cocos2d에서 경험했지만 오늘은 cocos2d-x를 시작했습니다. 나는 onEnter, selected와 all과 같은 기본 메소드를 실행하지 않는 메뉴 버튼 클래스를 작성했습니다. 여기 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
테스트하는 방법, 나는 그것이 onEnter의 대안 인 Cocos2d-iphone에있는 것처럼 사용 했습니까? – iPhoneProcessor
수퍼 클래스의 onEnter 메서드에서 중단 점을 설정하여 테스트 – LearnCocos2D