在Cocos2dx v3中不再调用Component的更新功能,而在v2.x中它被称为
我注意到CCScheduler在两个版本中完全不同,并且v2中的Node :: update是从CCScheduler :: update函数调用的,但是在v3中它是从Scene :: update调用的 - 它永远不会被调用。
任何人都知道将此从v2迁移到v3的最佳方式是什么。
我的代码如下
在游戏场景中
layerMoveLeft = ParallaxNode::create();
layerMoveLeft->addComponent(new MoveLeft() );
this->addChild(layerMoveLeft);
在MoveLeft类中 -
class MoveLeft : public Component
...
void MoveLeft::onEnter()
{
log("- MoveLeft::onEnter");
}
void MoveLeft::update(float delta) {
log("- MoveLeft::update");
}
永远不会调用v3中的更新功能
答案 0 :(得分:0)
在V 3+中,您可以使用ScheduleUpdate()
函数调用在Node类上调用update方法。
virtual void update(float dt);
我不知道你为什么要在V 3.0中使用Component类
答案 1 :(得分:0)
进行以下更改,我希望它能够正常运作。
<强> MoveLeft.h 强>
void update(float delta);
<强> MoveLeft.cpp 强>
this->scheduleUpdate();
您可以在类中的任何位置添加上面的代码(最好是在init()方法中) 现在像以前一样创建函数:
void MoveLeft::update(float delta) {
log("- MoveLeft::update");
}
P.S :我还没有将它用于Component,我已将它与Layer一起使用。
class Quizzes: public cocos2d::Layer{
public:
virtual bool init();
}
答案 2 :(得分:0)
在V 3+中,您可以将上面的代码添加到组件的父类。
this->scheduleUpdate();