我基本上试图将对象的修改延迟10秒。
这是我认为可行的方法:
this->scheduleOnce(schedule_selector(customer->setBusy(false)), 10000);
但是我收到编译错误:
Lvalue required as unary '&' operand
是否有一种简单的方法可以延迟一行代码?也许只使用c ++命令会更有效率,但sleep
命令也会给我带来问题。
答案 0 :(得分:5)
你需要写这样的schedulelarOnce
在.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
中答案 1 :(得分:2)
您需要从该单行代码中创建一个函数,因为您无法将值传递给选择器函数。所以像这样:
this->scheduleOnce(schedule_selector(MyClass::myModification), 10.0f);
然后你会有一个带有修改代码的函数。
void MyClass::myModification(float dt)
{
customer->setBusy(false);
// Whatever other stuff you want run.
}
此外,结束时的延迟以秒为单位,而不是毫秒。所以你可能要等几个小时才能运行。
答案 2 :(得分:2)
如果您的类派生自Node,您还可以通过创建回调并在序列中调用它来实现此目的。如果您需要创建操作链或将游戏事件与操作序列同步,则这是一种有用的模式。 (科科斯版本3 +)
const float myDelay = 1.0f;
this->runAction( Sequence::create(
DelayTime::create(myDelay),
CallFunc::create(CC_CALLBACK_0(MyClass::MyFunction, this)),
nullptr));
答案 3 :(得分:0)
this-> scheduleOnce它只能使用自己的方法