替换场景后,计划方法不再起作用
After replacing Scene, the Schedule method doesn't work anymore
我正在用cocos2dx制作一个游戏,所以我做了一个名为CoCoGui
我还制作了一个从CCLayerColor
继承游戏介绍页面的IntroPage
类,以及一个从CCLayerColor
继承的StartPage
类。我想在前 2 秒显示介绍页面,然后显示StartingPage
但是在 CoCoGui
的updateGame
函数(这是游戏的主循环)中,当调用replaceScene
方法,并且Scene
被替换时,updateGame
方法将不再被调用!请帮我解决这个问题谢谢!
这是CoCoGui.h文件: StartingPage
和 IntroPage
是从 CCLayerColor
继承的两个类
#ifndef _COCOGUI_H_
#define _COCOGUI_H_
#include "StartingPage.h"
#include "..ClassesWorkSpace.h"
#include "..ClassesGameBoard.h"
#include "..ClassesIntroPage.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
函数。
如果这类似于 cocos2d-iphone,则必须调用 onEnterTransitionDidFinish 的基类实现和类似的 onEnter/onExit 覆盖。在 cocos2d-iphone 中,不调用 super 中的某些方法可能会导致调度和输入停止工作。
尝试添加
this->resume();
调用时间表后。
此外,请确保已加载连接到图层的场景。 否则,将导致运行时错误。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- QTimer timeout()方法不再在代码重组后启动
- 重构后,异步调用方法不再有效
- 替换场景后,计划方法不再起作用
- 容器优化:为什么STL容器方法参数不再使用allocator::const_reference typedef