博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos2d-x 3.2 学习笔记(七)Scene And Transition
阅读量:4672 次
发布时间:2019-06-09

本文共 6562 字,大约阅读时间需要 21 分钟。

Scene 场景。

是一个抽象的概念,仅被用作Node(节点)的一个子类.

Scene (场景)和Node(节点)几乎相同,不同的是Scene的默认锚点在屏幕的中心.

关于场景,不得不提的是场景之间的切换!效果挺炫的!下面看看33种切换效果,可以根据需要选择和扩展。

#ifndef __SceneTest__#define __SceneTest__#include "cocos2d.h"USING_NS_CC;class SceneTest : public Layer{public:    static Scene* createScene();    CREATE_FUNC(SceneTest);    virtual bool init();    bool onToucheBegans(Touch* touch,Event* ev);};class SceneConfig{public:    static SceneConfig* getInstance();    int getIndex();    void setIndex(int index);    std::string getBg();protected:private:        };#endif
SceneTest.h
#include "SceneTest.h"static const char s_bg1[]="background1.png";static const char s_bg2[]="HelloWorld.png";#define str(name) #name #define CL(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene());log(str(classname));return scene;}#define CLN(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene(),false);log(str(classname));return scene;}#define CLS(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene(),ccc3(255, 0, 0));log(str(classname));return scene;}#define CLM(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene(),TransitionScene::Orientation::LEFT_OVER);log(str(classname));return scene;}static std::function
createFunctions[] = { CL(TransitionJumpZoom),//作用: 创建一个跳动的过渡动画 CL(TransitionProgressRadialCCW), // 作用: 创建一个扇形条形式的过渡动画, 逆时针方向 CL(TransitionProgressRadialCW),// 作用: 创建一个扇形条形式的过渡动画, 顺时针方向 CL(TransitionProgressHorizontal),// 作用: 创建一个水平条形式的过渡动画 CL(TransitionProgressVertical),// 作用: 创建一个垂直条形式的过渡动画 CL(TransitionProgressInOut),// 作用: 创建一个由里向外扩展的过渡动画 CL(TransitionProgressOutIn),// 作用: 创建一个由外向里扩展的过渡动画 CL(TransitionCrossFade),// 作用:创建一个逐渐透明的过渡动画 CL(TransitionFadeTR),// 作用:创建一个部落格过渡动画, 从左下到右上 CL(TransitionFadeBL),// 作用:创建一个部落格过渡动画, 从右上到左下 CL(TransitionFadeUp),// 作用:创建一个从下到上,条形折叠的过渡动画 CL(TransitionFadeDown),// 作用:创建一个从上到下,条形折叠的过渡动画 CL(TransitionTurnOffTiles),// 作用:创建一个随机方格消失的过渡动画 CL(TransitionSplitRows),// 作用:创建一个分行划分切换的过渡动画 CL(TransitionSplitCols), // 作用:创建一个分列划分切换的过渡动画 CL(TransitionShrinkGrow),// 创建一个放缩交替的过渡动画 CL(TransitionRotoZoom),// 创建一个旋转放缩交替的过渡动画 CL(TransitionMoveInL),// 作用:创建一个从左边推入覆盖的过渡动画 CL(TransitionMoveInR),// 作用:创建一个从右边推入覆盖的过渡动画 CL(TransitionMoveInB),// 作用:创建一个从下边推入覆盖的过渡动画 CL(TransitionMoveInT),// 作用:创建一个从上边推入覆盖的过渡动画 CL(TransitionSlideInL),// 作用:创建一个从左侧推入并顶出旧场景的过渡动画 CL(TransitionSlideInR),// 作用:创建一个从右侧推入并顶出旧场景的过渡动画 CL(TransitionSlideInT), // 作用:创建一个从顶部推入并顶出旧场景的过渡动画 CL(TransitionSlideInB),// 作用:创建一个从下部推入并顶出旧场景的过渡动画 CLN(TransitionPageTurn),// 作用:创建一个翻页的过渡动画 CLS(TransitionFade),// 作用:创建一个逐渐过渡到目标颜色的切换动画 CLM(TransitionFlipX),// 作用:创建一个x轴反转的切换动画 CLM(TransitionFlipY),// 作用:创建一个Y轴反转的切换动画 CLM(TransitionFlipAngular),// 作用:创建一个带有反转角切换动画 CLM(TransitionZoomFlipX),// 作用:创建一个带有缩放的x轴反转切换的动画 CLM(TransitionZoomFlipY),// 作用:创建一个带有缩放的Y轴反转切换的动画 CLM(TransitionZoomFlipAngular)// 作用:创建一个带有缩放 ,反转角切换的动画};Scene* SceneTest::createScene(){ auto scene = Scene::create(); auto layer = SceneTest::create(); scene->addChild(layer); return scene;}bool SceneTest::init(){ auto sprite = Sprite::create(SceneConfig::getInstance()->getBg()); Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); this->addChild(sprite, 0); auto eventListener = EventListenerTouchOneByOne::create(); eventListener->onTouchBegan = CC_CALLBACK_2(SceneTest::onToucheBegans,this); this->_eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener,this); return true;}#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0]))bool SceneTest::onToucheBegans(Touch* touch,Event* ev){ auto idx = SceneConfig::getInstance()->getIndex(); idx++; idx = idx%MAX_LAYER; SceneConfig::getInstance()->setIndex(idx); auto reScene = createFunctions[idx](); Director::getInstance()->setDepthTest(false); Director::getInstance()->replaceScene(reScene); return true;}static SceneConfig* config;static int _index;SceneConfig* SceneConfig::getInstance(){ if( !config ) { config = new SceneConfig(); _index = 0; } return config;}int SceneConfig::getIndex(){ return _index;}void SceneConfig::setIndex(int index){ _index = index;}std::string SceneConfig::getBg(){ auto index = _index; if( index%2 > 0 ) { return s_bg1; } else { return s_bg2; }}
SceneTest.cpp

点击屏幕看看效果吧。

  CL(TransitionJumpZoom),//作用: 创建一个跳动的过渡动画     CL(TransitionProgressRadialCCW), //    作用: 创建一个扇形条形式的过渡动画, 逆时针方向    CL(TransitionProgressRadialCW),//    作用: 创建一个扇形条形式的过渡动画, 顺时针方向    CL(TransitionProgressHorizontal),//    作用: 创建一个水平条形式的过渡动画    CL(TransitionProgressVertical),//    作用: 创建一个垂直条形式的过渡动画    CL(TransitionProgressInOut),//    作用: 创建一个由里向外扩展的过渡动画    CL(TransitionProgressOutIn),//    作用: 创建一个由外向里扩展的过渡动画    CL(TransitionCrossFade),//    作用:创建一个逐渐透明的过渡动画    CL(TransitionFadeTR),//    作用:创建一个部落格过渡动画, 从左下到右上    CL(TransitionFadeBL),//    作用:创建一个部落格过渡动画, 从右上到左下    CL(TransitionFadeUp),//    作用:创建一个从下到上,条形折叠的过渡动画    CL(TransitionFadeDown),//    作用:创建一个从上到下,条形折叠的过渡动画    CL(TransitionTurnOffTiles),//    作用:创建一个随机方格消失的过渡动画    CL(TransitionSplitRows),//    作用:创建一个分行划分切换的过渡动画    CL(TransitionSplitCols), //    作用:创建一个分列划分切换的过渡动画    CL(TransitionShrinkGrow),//    创建一个放缩交替的过渡动画    CL(TransitionRotoZoom),// 创建一个旋转放缩交替的过渡动画    CL(TransitionMoveInL),//    作用:创建一个从左边推入覆盖的过渡动画    CL(TransitionMoveInR),//    作用:创建一个从右边推入覆盖的过渡动画    CL(TransitionMoveInB),//    作用:创建一个从下边推入覆盖的过渡动画    CL(TransitionMoveInT),//    作用:创建一个从上边推入覆盖的过渡动画    CL(TransitionSlideInL),//    作用:创建一个从左侧推入并顶出旧场景的过渡动画    CL(TransitionSlideInR),//    作用:创建一个从右侧推入并顶出旧场景的过渡动画    CL(TransitionSlideInT), //    作用:创建一个从顶部推入并顶出旧场景的过渡动画    CL(TransitionSlideInB),//    作用:创建一个从下部推入并顶出旧场景的过渡动画    CLN(TransitionPageTurn),//    作用:创建一个翻页的过渡动画    CLS(TransitionFade),//    作用:创建一个逐渐过渡到目标颜色的切换动画    CLM(TransitionFlipX),//    作用:创建一个x轴反转的切换动画    CLM(TransitionFlipY),//    作用:创建一个Y轴反转的切换动画    CLM(TransitionFlipAngular),//    作用:创建一个带有反转角切换动画    CLM(TransitionZoomFlipX),//     作用:创建一个带有缩放的x轴反转切换的动画    CLM(TransitionZoomFlipY),//     作用:创建一个带有缩放的Y轴反转切换的动画    CLM(TransitionZoomFlipAngular)//     作用:创建一个带有缩放 ,反转角切换的动画

 

转载于:https://www.cnblogs.com/Richard-Core/p/3880469.html

你可能感兴趣的文章
Collection集合
查看>>
int最大值+1为什么是-2147483648最小值-1为什么是2147483647
查看>>
【C++】const在不同位置修饰指针变量
查看>>
github新项目挂历模式
查看>>
编写jquery插件
查看>>
敏捷开发笔记
查看>>
神秘海域:顶级工作室“顽皮狗”成长史(下)
查看>>
C++指针、引用知多少?
查看>>
services 系统服务的启动、停止、卸载
查看>>
Fiddler 网页采集抓包利器__手机app抓包
查看>>
Number and String
查看>>
java中的值传递和引用传递2<原文:http://blog.csdn.net/niuniu20008/article/details/2953785>...
查看>>
css实现背景图片模糊
查看>>
什么是runtime?什么是webgl?
查看>>
秋季学习总结
查看>>
categorical_crossentropy VS. sparse_categorical_crossentropy
查看>>
强引用,弱引用,4种Java引用浅解(涉及jvm垃圾回收)
查看>>
多线程如何确定线程数
查看>>
UGUI RectTransform
查看>>
学前班
查看>>