不再调用组件的更新功能

时间:2015-02-01 23:58:42

标签: cocos2d-x cocos2d-x-3.0

在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中的更新功能

3 个答案:

答案 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();