过三秒之后,创建精灵并显示在屏幕上
auto vSize = Director::getInstance()->getVisibleSize();
auto delayTime = DelayTime::create(3.0f);
auto func = CallFunc::create([this, vSize]()
{
auto sp = Sprite::create("blue.png");
sp->setPosition(vSize / 2);
this->addChild(sp);
});
auto seq = Sequence::create(delayTime, func, nullptr);
this->runAction(seq);
当然,也可以让lambda的方法抽出来,增加复用性。
bool HelloWorld::init()
{
if(!Layer::init())
{
return false;
}
auto delayTime = DelayTime::create(3.0f);
auto func = CallFunc::create(CC_CALLBACK_0(HelloWorld::initBlue, this));
auto seq = Sequence::create(delayTime, func, nullptr);
this->runAction(seq);
return true;
}
void HelloWorld::initBlue()
{
auto vSize = Director::getInstance()->getVisibleSize();
auto sp = Sprite::create("blue.png");
sp->setPosition(vSize / 2);
this->addChild(sp);
}还可以传递参数,注意要用CallFuncN
bool HelloWorld::init()
{
if(!Layer::init())
{
return false;
}
auto delayTime = DelayTime::create(3.0f);
auto func = CallFuncN::create(CC_CALLBACK_1(HelloWorld::initBlue, this, 1));
auto seq = Sequence::create(delayTime, func, nullptr);
this->runAction(seq);
return true;
}
void HelloWorld::initBlue(Ref* ref, int num)
{
log("%d", num);
auto vSize = Director::getInstance()->getVisibleSize();
auto sp = Sprite::create("blue.png");
sp->setPosition(vSize / 2);
this->addChild(sp);
}
本文介绍如何使用Cocos2d-x通过延时操作,在三秒后创建并显示一个精灵对象到屏幕中央。提供了三种实现方式:直接使用lambda表达式、将lambda表达式封装为成员函数以及传递参数给成员函数。
3231

被折叠的 条评论
为什么被折叠?



