我基本上试图延迟对象的修改10秒。我可以使用cocos2d-x调度程序来延迟单行代码吗?
这是我认为可能的工作:
this->scheduleOnce(schedule_selector(customer->setBusy(false)), 10000);
但我得到一个编译器错误:
Lvalue required as unary '&' operand
是否有延迟一行代码的简单方法?也许只是使用C++命令会更有效率,但sleep
命令也给我提出了问题。
我基本上试图延迟对象的修改10秒。我可以使用cocos2d-x调度程序来延迟单行代码吗?
这是我认为可能的工作:
this->scheduleOnce(schedule_selector(customer->setBusy(false)), 10000);
但我得到一个编译器错误:
Lvalue required as unary '&' operand
是否有延迟一行代码的简单方法?也许只是使用C++命令会更有效率,但sleep
命令也给我提出了问题。
这个 - > scheduleOnce它只能使用自己的方法
您将需要的功能出来的代码,单行的,因为你不能值传递给一个选择器功能。所以像这样:
this->scheduleOnce(schedule_selector(MyClass::myModification), 10.0f);
然后你会有一个函数与修改代码在它。
void MyClass::myModification(float dt)
{
customer->setBusy(false);
// Whatever other stuff you want run.
}
另外,最后的延迟以秒为单位,而不是毫秒。所以你会等待几个小时才能运行。
你需要写你schedularOnce这样
在.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
您也可以通过创建回调并在序列中调用它来实现此目的,如果y我们的类来自Node。如果您需要创建动作链或将动作序列与游戏事件同步,则这是一种有用的模式。 (科科斯版本3+)
const float myDelay = 1.0f;
this->runAction(Sequence::create(
DelayTime::create(myDelay),
CallFunc::create(CC_CALLBACK_0(MyClass::MyFunction, this)),
nullptr));
它不起作用。间隔后不调用回调函数。 – PaulD
3.xx有什么用? –
它也在3.x中工作的概念是一样的 – Singhak