Cocos2d-x:隐藏1英寸精灵

时间:2013-07-17 07:56:12

标签: cocos2d-x

我是Cocos2d-x的新手。

我正在开发一款简单的游戏。

我想从右到左移动一个精灵。

在移动过程中,我希望精灵隐藏在1s的距离内。 顺序:1s:可见,1s:不可见,1s:可见

示例:它从位置A运行到D 在A和D之间我们有B和C => (A-> B-> C-> D) 当A-> B中的精灵可见时,则B-> C 隐藏,然后C-> D再次可见。

我该怎么做?

感谢您的帮助。

5 个答案:

答案 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);

要移动您的节点(在您的情况下为精灵),您可以同时使用CCMoveToCCMoveBy操作。 例如

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。