【问题标题】:Cocos2d-x: Hide Sprite in 1sCocos2d-x:1秒隐藏精灵
【发布时间】:2013-07-17 07:56:12
【问题描述】:

我是 Cocos2d-x 的新手。

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

我想将精灵从右移到左。

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

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

我该怎么做?

感谢您的所有帮助。

【问题讨论】:

    标签: cocos2d-x


    【解决方案1】:

    对于延迟显示/隐藏,您可以使用此代码(我已经在此处编写了它,因此只需复制并粘贴到您的项目后可能无法编译它=))

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

    【讨论】:

      【解决方案2】:

      试试这个动作

      CCHide * hideAction = CCHide::create();
      

      【讨论】:

        【解决方案3】:

        你可以使用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();
        }
        

        【讨论】:

        • 非常感谢,但我的意思是:如果它运行 3 秒,那么它在 1 秒内不可见,序列:1s:visible,1s:invisible,1s:visible
        【解决方案4】:
        Sprite->runAction(Sequence::create(MoveTo::create(1.0f, Vec2(200,200)),Hide::create(),MoveTo::create(1.0f, Vec2(200,400)),Show::create(),NULL));
        

        【讨论】:

          【解决方案5】:

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

          这里只有精灵隐藏。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多