【问题标题】:cocos2dx/coco2d layer transitioncocos2dx/coco2d 图层过渡
【发布时间】:2013-09-23 15:25:37
【问题描述】:

我希望当玩家获胜并通过大门时弹出一个分数面板。 通常它会弹出记分板。 我认为最好的方法是使用图层并将其拉下。 但是我只得到了场景的过渡,不知道有什么方法可以进行图层过渡吗?

【问题讨论】:

    标签: cocos2d-x


    【解决方案1】:

    没有看到等效的 CCTransitionScene :CCScene 用于 CCLayer,但层可以运行操作,使用它我们可以带出大部分动画/过渡。

    这是我在这种情况下所做的,但我猜你也在想同样的事情。尽管如此,

    1.创建一个图层并将其作为子级添加到屏幕框架之外的位置。 2.然后在你想拉下来的时候用CCMoveTo把它移动到想要的位置。

    【讨论】:

      【解决方案2】:

      我过去做过类似的事情。

      • 在屏幕外显示您的图层 即 setposition(0, CCDirector::sharedDirector()->getWinSize().height*1.5f);
      • 创建一个动作以在屏幕上移动它(我喜欢使用 CCEaseSineOut)
      • 您还可以使用 callfunc 在动画完成后调用函数
        scoreLayer->runAction(CCSequence::create(CCEaseSineOut::create(CCMoveTo::create(1.0f, ccp(0, 0-_screenHeight*1.5f))), CCCallFunc::create(this, callfunc_selector(MainLayer::scorefinishedMove) )), NULL));

      注意:该函数可能需要对结束括号等进行一些修复。您可能希望分离出其中一些操作,而不是将初始化权放在 runAction 函数中

      【讨论】:

        【解决方案3】:

        对于图层转换,您可以这样做:

           CCScene* newScene =  CCTransitionCrossFade::create(.5f,Layer2::scene());
        
        CCDirector::sharedDirector()->pushScene(newScene);
        

        在Layer2.cpp中

        CCScene* Layer2::scene()

        {

        CCScene* scene =  CCScene::create();
        
        CCLayer* layer = new Layer2();
        scene->addChild(layer,1);
        
        return scene;
        

        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-07
          • 1970-01-01
          相关资源
          最近更新 更多