• [Cocos2d-x For WP8]Transition 场景切换


        在游戏中通常会打完了一关之后就会从当前的场景转换到另外一关的场景了,在Cocos2d-x中是由CCScene类表示一个场景。那么场景(CCScene)是为游戏中的精灵(CCSprite)提供了舞台,场景由导演(CCDirector)控制,游戏中的所有场景存放在一个栈中,有且只有一个场景可以处于激活状态。直接replaceScene(即不适用动画效果)可以轻松的完成场景的切换,释放掉就场景,加载新场景,几乎不需要时间的过渡,瞬间完成。那么如果我们要在场景转换的过程中用一点动画的效果,就需要用到CCTransition这些场景切换的动画类了,在Cocos2d-x这些场景切换动画类有下面这些:

    CCTransitionFade,  //渐隐效果
    CCTransitionFadeTR, //碎片效果
    CCTransitionJumpZoom, //跳动效果
    CCTransitionMoveInL, //从左向右移动
    CCTransitionPageTurn, //翻页效果
    CCTransitionRadialCCW, //钟摆效果
    CCTransitionRotoZoom,//涡轮效果
    CCTransitionSceneOriented,//
    CCTransitionShrinkGrow, //渐远效果
    CCTransitionSlideInL, //左移
    CCTransitionSplitCols,//上下移动
    CCTransitionTurnOffTiles//
    CCTransitionScene : CCScene  基类
    
    CCRotoZoomTransition 旋转缩小切换
    CCJumpZoomTransition 缩小后跳跃切换
    CCSlideInLTransition 从左向右切换
    CCSlideInRTransition 从右向左切换
    CCSlideInTTransition 从上向下切换
    CCSlideInBTransition 从下向上切换
    CCShrinkGrowTransition 逐渐缩小切换
    CCFlipXTransition 已x中间为轴平面式旋转切换
    CCFlipYTransition 已y中间为轴平面式旋转切换
    CCFlipAngularTransition 侧翻式旋转切换
    CCZoomFlipXTransition 缩小后x为轴旋转切换
    CCZoomFlipYTransition 缩小后y为轴旋转切换
    CCZoomFlipAngularTransition 缩小侧翻式旋转切换
    CCFadeTransition 逐渐变暗切换
    CCCrossFadeTransition   逐渐变暗切换2
    CCTurnOffTilesTransition 随机方块覆盖切换
    CCSplitColsTransition 三条上下分开切换
    CCSplitRowsTransition 三条左右分开切换
    CCFadeTRTransition 小方块大方块式切换 左下到右上 眩!
    CCFadeBLTransition 小方块大方块式切换 右上到左下 眩!
    CCFadeUpTransition 百叶窗从下向上
    CCFadeDownTransition 百叶窗从上向下
    
    CCTransitionRotoZoom : CCTransitionScene 旋转进入
    CCTransitionJumpZoom : CCTransitionScene 跳动进入
    CCTransitionMoveInL : CCTransitionScene<CCTransitionEaseScene> 从左侧进入
    CCTransitionMoveInR : CCTransitionMoveInL 从右侧进入
    CCTransitionMoveInT : CCTransitionMoveInL 从顶部进入
    CCTransitionMoveInB : CCTransitionMoveInL 从底部进入
    CCTransitionSlideInL : CCTransitionScene<CCTransitionEaseScene> 从左侧滑入
    CCTransitionSlideInR : CCTransitionSlideInL 从右侧滑入
    CCTransitionSlideInB : CCTransitionSlideInL 从顶部滑入
    CCTransitionSlideInT : CCTransitionSlideInL 从底部滑入
    CCTransitionShrinkGrow : CCTransitionScene<CCTransitionEaseScene> 交替进入
    CCTransitionFlipX : CCTransitionSceneOriented x轴翻入(左右)
    CCTransitionFlipY : CCTransitionSceneOriented y轴翻入(上下)
    CCTransitionFlipAngular : CCTransitionSceneOriented 左上右下轴翻入
    CCTransitionZoomFlipX : CCTransitionSceneOriented x轴翻入放大缩小效果(左右)
    CCTransitionZoomFlipY : CCTransitionSceneOriented y轴翻入放大缩小效果(上下)
    CCTransitionZoomFlipAngular :CCTransitionSceneOriented  左上右下轴翻入放大缩小效果
    CCTransitionFade : CCTransitionScene  变暗变亮进入
    CCTransitionCrossFade : CCTransitionScene 渐变进入
    CCTransitionTurnOffTiles : CCTransitionScene<CCTransitionEaseScene> 小方格消失进入
    CCTransitionSplitCols : CCTransitionScene<CCTransitionEaseScene> 竖条切换进入
    CCTransitionSplitRows : CCTransitionSplitCols 横条切换进入
    CCTransitionFadeTR : CCTransitionScene<CCTransitionEaseScene> 小方格右上角显示进入
    CCTransitionFadeBL : CCTransitionFadeTR 小方格左下角显示进入
    CCTransitionFadeUp : CCTransitionFadeTR 横条向上显示进入
    CCTransitionFadeDown : CCTransitionFadeTR 横条向下显示进入


    下面我们在Hello World的项目中使用一下场景转换的动画,当用户点击界面的时候就会切换到两外一个场景

    //在init方法里面初始化当前的实例
    bool HelloWorld::init()
    {
        bool bRet = false;
    
        do 
        {
            //CCLayer进行初始化,初始化失败跳出循环
            if ( !CCLayer::init() )
            {
                break;
            }
            //获取手机屏幕的大小
            CCSize size = CCDirector::sharedDirector()->getWinSize();
            //创建文字Label
            CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Times New Roman", 24);
            //设置文字Label的位置
            pLabel->setPosition( ccp(size.width * 0.5, size.height * 0.5) );
             //设置文字Label的颜色
            pLabel->setColor(ccc3(160, 80, 5));
            //添加到当前的界面上
            this->addChild(pLabel, 1);
            //接收界面的的触摸事件
            setTouchEnabled(true);
    
            bRet = true;
        } while (0);
        //返回成功
        return bRet;
    }
    
    
    // 屏幕点击事件
    void HelloWorld::ccTouchesEnded(CCSet* touches, CCEvent* event)
    {
        CCScene* s = new CCScene();
        CCLayer* pLayer = new TestLayer2();
        s->addChild(pLayer);
        CCScene* pScene = CCTransitionJumpZoom::create(4.2f, s);
        pLayer->release();
        s->release();
        if (pScene)
        {
            CCDirector::sharedDirector()->replaceScene(pScene);
        }
    }
    
    TestLayer2::TestLayer2()
    {
             CCSize size = CCDirector::sharedDirector()->getWinSize();
            CCSprite *b = CCSprite::create("cat.png");
            b->setPosition(ccp(0, 0));
            b->setPosition(ccp(size.width * 0.5, size.height * 0.5));
            this->addChild(b);
    }
    
    TestLayer2::~TestLayer2()
    {
    
    }

    运行的效果:

  • 相关阅读:
    HttpCookie类
    WebClient类
    最大流算法 ISAP 模板 和 Dinic模板
    拓扑序+dp Codeforces Round #374 (Div. 2) C
    二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D
    线段树 或者 并查集 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C
    无源无汇有上下界的最大流
    并查集+bfs+暴力滑窗 Codeforces Round #356 (Div. 2) E
    dfs Codeforces Round #356 (Div. 2) D
    cookie+session
  • 原文地址:https://www.cnblogs.com/linzheng/p/3273547.html
Copyright © 2020-2023  润新知