我在 Cocos2dx-3.8 中遇到了一个类似的问题,试图在Scene
我正在开发的一个中安排一个选择器。
我的故障代码是:
void GameScene::onEnter() {
this->scheduleOnce(CC_SCHEDULE_SELECTOR(GameScene::scheduledSelector), 3.0);
this->scheduleUpdate();
}
void GameScene::scheduledSelector(float dt) {
log("Scheduled selector called...");
}
void GameScene::update(float delta) {
log("update called...");
}
在这种情况下,既没有scheduledSelector
也没有被叫到。update
我在 Cocos2dxNode
文档中找到了我的问题的解决方案: A的调度程序在调用它的方法Node
之前不会开始调度更新:Node
resume
/**
* Resumes all scheduled selectors, actions and event listeners.
* This method is called internally by onEnter.
*/
virtual void resume(void);
我的坏处是我重写了 Node 的 onEnter 方法而没有通过超类实现调用,所以调度程序从来没有收到开始更新的信号。修复我的 onEnter 方法:
void GameScene::onEnter() {
Node::onEnter();
this->scheduleOnce(CC_SCHEDULE_SELECTOR(GameScene::scheduledSelector), 3.0);
this->scheduleUpdate();
}
完成了这项工作,两个选择器开始在正确的时间被调用。