我是 Cocos2d-x 的新手。
我正在开发一个简单的游戏。
我想将精灵从右向左移动。
在它移动的过程中,我希望精灵在 1 秒内隐藏在远处。顺序:1s:可见,1s:不可见,1s:可见
示例:它从位置 A 运行到 D 在 A 和 D 之间我们有 B 和 C => ( A->B->C->D) 当 A->B 中的精灵可见时,然后 B->C 它会是hide,然后 C->D 它再次可见。
我该怎么做?
感谢您的所有帮助。
我是 Cocos2d-x 的新手。
我正在开发一个简单的游戏。
我想将精灵从右向左移动。
在它移动的过程中,我希望精灵在 1 秒内隐藏在远处。顺序:1s:可见,1s:不可见,1s:可见
示例:它从位置 A 运行到 D 在 A 和 D 之间我们有 B 和 C => ( A->B->C->D) 当 A->B 中的精灵可见时,然后 B->C 它会是hide,然后 C->D 它再次可见。
我该怎么做?
感谢您的所有帮助。
对于延迟显示/隐藏,您可以使用此代码(我已经在这里编写了它,因此在简单地复制并粘贴到您的项目后可能无法编译它=))
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);
您可以使用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();
}
试试这个动作
CCHide * hideAction = CCHide::create();
SpriteName->runAction(Sequence::create(Hide::create(),NULL));
这里只有 Sprite Hide。
Sprite->runAction(Sequence::create(MoveTo::create(1.0f, Vec2(200,200)),Hide::create(),MoveTo::create(1.0f, Vec2(200,400)),Show::create(),NULL));