Cocos2d x 不再调用组件的更新函数
组件的更新函数在cocos2dxv3中不再被调用,而在v2.x中被调用为fine 我注意到两个版本中的CCScheduler完全不同,v2中的Node::update是从CCScheduler::update函数调用的,但在v3中,它是从Scene::update调用的,而Scene::update从未调用过 任何人都知道从v2迁移到v3的最佳方法是什么 我的代码如下 在游戏场景中Cocos2d x 不再调用组件的更新函数,cocos2d-x,cocos2d-x-3.0,Cocos2d X,Cocos2d X 3.0,组件的更新函数在cocos2dxv3中不再被调用,而在v2.x中被调用为fine 我注意到两个版本中的CCScheduler完全不同,v2中的Node::update是从CCScheduler::update函数调用的,但在v3中,它是从Scene::update调用的,而Scene::update从未调用过 任何人都知道从v2迁移到v3的最佳方法是什么 我的代码如下 在游戏场景中 layerMoveLeft = ParallaxNode::create(); layerMoveLeft->
layerMoveLeft = ParallaxNode::create();
layerMoveLeft->addComponent(new MoveLeft() );
this->addChild(layerMoveLeft);
在左类中-
class MoveLeft : public Component
...
void MoveLeft::onEnter()
{
log("- MoveLeft::onEnter");
}
void MoveLeft::update(float delta) {
log("- MoveLeft::update");
}
v3+中从未调用v3中的更新函数。您可以使用ScheduleUpdate函数调用在节点类上调用更新方法
virtual void update(float dt);
我不知道您为什么希望V3.0中的组件类进行以下更改,我希望它能正常工作 向左移动 MoveLeft.cpp 您可以在类中任意位置添加上述代码,最好是在init方法中 现在,按照之前的操作创建函数:
void MoveLeft::update(float delta) {
log("- MoveLeft::update");
}
附言:我没有在组件中使用它,我在图层中使用过它
class Quizzes: public cocos2d::Layer{
public:
virtual bool init();
}
在v3+中,您可以将上面的代码添加到组件的父类中
this->scheduleUpdate();
我实际上正在将我的v2项目迁移到v3+。。如果你能告诉我什么是组件机制的替代方案,那就太好了。我在组件的“oneter”函数上调用ScheduleUpdate吗?组件类是Ref类的子类。我想你可以使用scheduleUpdate。这可能对你有帮助:谢谢,我会试试的。我将其与组件一起使用,并将其添加到ParrallaxNode
class Quizzes: public cocos2d::Layer{
public:
virtual bool init();
}
this->scheduleUpdate();