1

我是 Cocos2d-x 的新手。

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

我想将精灵从右向左移动。

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

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

我该怎么做?

感谢您的所有帮助。

4

5 回答 5

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);
于 2013-07-17T10:17:19.830 回答
1

您可以使用CCSpawn,这可以同时运行两个动作。

你可以试试这段代码:

CCAction* action = CCSpawn::createWithTwoActions(CCMoveTo::create(1,CCPointMake(x,y)), 
                                                 CCFadeOut::create(1));
you_sprite->runAction(action);

更新:

您可以使用CCRepeatForever运行淡入/淡出,并在移动动作完成后,永远停止这个动作。

这是代码:

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();
}
于 2013-07-17T08:01:02.307 回答
1

试试这个动作

CCHide * hideAction = CCHide::create();
于 2014-01-05T15:04:34.217 回答
0

SpriteName->runAction(Sequence::create(Hide::create(),NULL));

这里只有 Sprite Hide。

于 2017-06-02T18:46:20.973 回答
0
Sprite->runAction(Sequence::create(MoveTo::create(1.0f, Vec2(200,200)),Hide::create(),MoveTo::create(1.0f, Vec2(200,400)),Show::create(),NULL));
于 2015-10-02T08:32:34.797 回答