gpt4 book ai didi

c++ - 更换场景后,Schedule 方法不再起作用

转载 作者:太空狗 更新时间:2023-10-29 21:25:33 24 4
gpt4 key购买 nike

我在 cocos2dx 中制作游戏,所以我制作了一个名为 CoCoGui 的类我还制作了一个 IntroPage 类,它继承自 CCLayerColor 作为游戏的介绍页面,还有一个 StartPage 类继承自 CCLayerColor,也是。我想在前 2 秒显示介绍页面,然后显示 StartingPage但是在 CoCoGuiupdateGame 函数中(这是游戏的主循环),当调用 replaceScene 方法时, Scene 被替换,updateGame 方法将不再被调用!请帮我解决这个问题谢谢!

这是 CoCoGui.h 文件:StartingPageIntroPage 是继承自CCLayerColor

的两个类
#ifndef _COCOGUI_H_
#define _COCOGUI_H_

#include "StartingPage.h"
#include "..\Classes\WorkSpace.h"
#include "..\Classes\GameBoard.h"
#include "..\Classes\IntroPage.h"
using namespace cocos2d;

class CoCoGui : public CCLayerColor{

public:
CoCoGui();
void addScene (CCScene * startPage, CCScene * work);
virtual ~CoCoGui(void);
void updateGame ( float dt );
virtual bool init();
static CCScene* scene();
CREATE_FUNC(CoCoGui);
private:
bool isInit;
CCScene * runnigScene;
IntroPage * introPage;
StartingPage * startingPage;
void onEnterTransitionDidFinish();
void menuCloseCallback(CCObject* pSender);
public:
CCScene * getRunningScene(void);
};

#endif /* COCOGUI_H */

这里还有CoCoGui.cpp文件

#include "CoCoGui.h"
#include <iostream>
using namespace std;
CCScene* CoCoGui::scene(){
CCScene *scene = CCScene::create();
CoCoGui *layer = CoCoGui::create();

scene->addChild(layer);

return scene;
}

CoCoGui::CoCoGui ( )
{
this->isInit = false;
this->introPage = new IntroPage ( );
this->startingPage = new StartingPage ( );
}

CoCoGui::~CoCoGui(void)
{
delete introPage;
delete startingPage;
}

void CoCoGui::menuCloseCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}

bool CoCoGui::init ( ){
if ( !CCLayerColor::initWithColor ( ccc4 (100,100,100,255) ) ){
return false;
}
this->schedule ( schedule_selector ( CoCoGui::updateGame ), 0.5 );
return true;
}

void CoCoGui::updateGame ( float dt ){
cout << "Update Called" << endl;
if ( !isInit )
return;
CCScene * scene = NULL;
if ( !this->introPage->isIntroPageDone ( ) ){
scene = IntroPage::scene();
}
else if ( this->introPage->isIntroPageDone ( ) ){
scene = StartingPage::scene();
}
CCDirector::sharedDirector()->replaceScene(scene);
}

void CoCoGui::onEnterTransitionDidFinish ( ){
isInit = true;
}


CCScene * CoCoGui::getRunningScene(void)
{
return this->runnigScene;
}

最佳答案

ReplaceScene 将触发 this->onExit(),这将触发 unschedule 函数。

关于c++ - 更换场景后,Schedule 方法不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com