我似乎无法覆盖我的类中的init()方法,该类是CCLayer的子类。 我能够覆盖create()方法。我需要做的就是在我为init()方法创建图层时传递一个int: 这是create(int n)方法
CCLayer* Stage::create(int n)
{
CCLayer *pRet = new CCLayer();
if (pRet && pRet->init(n))
{
pRet->autorelease();
return pRet;
}
else
{
CC_SAFE_DELETE(pRet);
return NULL;
}
}
bool DuneStage::init(int ss)
{
// this code should execute
}
在.h文件中:
virtual bool init(int n);
static CCLayer* create(int z);
我还需要在CCLayer.cpp文件中覆盖此方法吗?
bool CCLayer::init()
{
bool bRet = false;
do
{
CCDirector * pDirector;
CC_BREAK_IF(!(pDirector = CCDirector::sharedDirector()));
this->setContentSize(pDirector->getWinSize());
m_bTouchEnabled = false;
m_bAccelerometerEnabled = false;
// success
bRet = true;
} while(0);
return bRet;
}
答案 0 :(得分:0)
重写的方法签名必须是父类方法virtual bool init()
如果要发送参数,则可以在CCLayer子类中将它们声明为成员变量,然后在init
方法中调用create
方法之前分配它们。
CCLayer* Stage::create(int n)
{
CCLayer *pRet = new CCLayer();
pRet->n = n
...........
...........
}
Stage* Stage::create(int n)
{
Stage* pRet = new Stage();
pRet->n = n
...........
...........
}