2013-11-26 29 views
1

我基本上试图延迟对象的修改10秒。我可以使用cocos2d-x调度程序来延迟单行代码吗?

这是我认为可能的工作:

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

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

Lvalue required as unary '&' operand 

是否有延迟一行代码的简单方法?也许只是使用C++命令会更有效率,但sleep命令也给我提出了问题。

回答

0

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

2

您将需要的功能出来的代码,单行的,因为你不能值传递给一个选择器功能。所以像这样:

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

然后你会有一个函数与修改代码在它。

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

另外,最后的延迟以秒为单位,而不是毫秒。所以你会等待几个小时才能运行。

5

你需要写你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

+0

它不起作用。间隔后不调用回调函数。 – PaulD

+0

3.xx有什么用? –

+0

它也在3.x中工作的概念是一样的 – Singhak

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)); 
相关问题