我可以使用cocos2d-x调度程序来延迟一行代码吗

Can I use the cocos2d-x scheduler to delay a single line of code?

本文关键字:一行 代码 延迟 可以使 cocos2d-x 调度程序 我可以      更新时间:2023-10-16

我实际上是在尝试将对对象的修改延迟10秒。

这是我认为可能有效的:

this->scheduleOnce(schedule_selector(customer->setBusy(false)), 10000);

但我得到了一个编译器错误:

Lvalue required as unary '&' operand

有没有一种简单的方法可以延迟一行代码?也许只使用c++命令会更有效率,但sleep命令也会给我带来问题。

你需要像这个一样写一次scheduler

在.h文件中,您声明

void myModification(float dt);

.cpp文件中的

this->scheduleOnce(schedule_selector(&MyClass::myModification), 10.0f);
void Myclass::myModification(float dt)
{
//your code
}

所有这些都在cocos2d-x 2.2 中

您需要用这一行代码生成一个函数,因为您无法将值传递给选择器函数。这样的东西:

this->scheduleOnce(schedule_selector(MyClass::myModification), 10.0f);

然后你就会有一个带有修改代码的函数

void MyClass::myModification(float dt)
{
    customer->setBusy(false);
    // Whatever other stuff you want run.
}

此外,结束时的延迟是以秒为单位测量的,而不是以毫秒为单位。所以你可能已经等了几个小时了。

如果您的类派生自Node,您还可以通过创建回调并从序列中调用它来实现这一点。如果您需要创建动作链或将游戏事件与动作序列同步,这是一个有用的模式。(Cocos版本3+)

const float myDelay = 1.0f;
this->runAction( Sequence::create(
                                  DelayTime::create(myDelay),
                                  CallFunc::create(CC_CALLBACK_0(MyClass::MyFunction, this)),
                                  nullptr));

this->scheduleOnce它只能使用自己的方法