结果反复测试,得出以下结论
只要这行代码pDispatcher->addTargetedDelegate(this, 0, false); 执行过,LogicLayer就不会自动调用析构了
class LogicLayer : public cocos2d::CCLayer
bool LogicLayer::init()
{
if (!CCLayer::init())
return false;
CCTouchDispatcher* pDispatcher = CCDirector::sharedDirector()->getTouchDispatcher();
pDispatcher->addTargetedDelegate(this, 0, false);
return true;
}
切换代码如下
void GameLayer::menuCloseCallback(CCObject* pSender)
{
LogicLayer *logic_layer = sGame.logic_layer();
CCScene *scene = new CCScene();
CCLayer *layer = MainMenuLayer::create();
scene->addChild(layer, 0);
CCDirector::sharedDirector()->replaceScene(
CCTransitionFade::transitionWithDuration(1.5f, scene));
scene->release();
}
难道让我touch用这些函数??下面这些是可以的,知道的大神指导一下^_^
virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);