我是Cocos2d-x的新手。
我正在开发一款简单的游戏。
我想从右到左移动一个精灵。
在移动过程中,我希望精灵隐藏在1s的距离内。 顺序:1s:可见,1s:不可见,1s:可见
示例:它从位置A运行到D 在A和D之间我们有B和C => (A-> B-> C-> D) 当A-> B中的精灵可见时,则B-> C 隐藏,然后C-> D再次可见。
我该怎么做?
感谢您的帮助。
答案 0 :(得分:2)
对于有延迟的显示/隐藏,你可以使用这段代码(我已经在这里写了,所以在简单地复制并粘贴到你的项目后它可能无法编译=))
float delay = 1f;
CCAction* hideAction = CCHide::create();
CCAction* showAction = CCShow::create();
CCActionInterval* showHideAction = CCSequence::create( CCDelayTime::create(delay),
hideAction,
CCDelayTime::create(delay),
showAction);
CCAction* foreverAction = CCRepeatForever::create(showHideAction);
yourNode->runAction(foreverAction);
要移动您的节点(在您的情况下为精灵),您可以同时使用CCMoveTo
和CCMoveBy
操作。
例如
float moveDuration = 5f;
CCPoint targetPos = CCPointMake(someX, someY);
CCAction* moveAction = CCMoveTo::create(moveDuration, targetPos);
yourNode->runAction(moveAction);
答案 1 :(得分:1)
您可以使用CCSpawn
,这可以同时运行两个操作。
您可以尝试以下代码:
CCAction* action = CCSpawn::createWithTwoActions(CCMoveTo::create(1,CCPointMake(x,y)),
CCFadeOut::create(1));
you_sprite->runAction(action);
<强>更新强>
您可以使用CCRepeatForever
来运行fadein / fadeout,在完成移动操作后,请永久停止此操作。
以下是代码:
CCSequence* move = CCSequence::create(CCMoveTo::create(3, CCPointMake(1, 1)),
CCCallFunc::create(this, callfunc_selector(SomeClass::some_func)),
NULL);
CCRepeatForever* forever = CCRepeatForever::create(CCSequence::create(CCFadeIn::create(1),
CCFadeOut::create(1)
NULL));
your_sprite->runAction(move);
your_sprite->runAction(forever);
这是回调函数(在移动操作后调用);
void SomeClass:some_func(){
your_sprite->stopAllActions();
}
答案 2 :(得分:1)
尝试此操作
CCHide * hideAction = CCHide::create();
答案 3 :(得分:0)
Sprite->runAction(Sequence::create(MoveTo::create(1.0f, Vec2(200,200)),Hide::create(),MoveTo::create(1.0f, Vec2(200,400)),Show::create(),NULL));
答案 4 :(得分:0)
SpriteName-&GT; runAction(序列::创建(隐藏::创建(),NULL));
这里只有Sprite Hide。