首页 > 代码库 > cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建

cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建

一、创建文件

       首先呢,就是那个创建新的.h 和 .cpp 的文件,然后可以起名为GameScene

最重要的就是一定要创建在Classes的目录下哦= =,别手抖= =。

二、GameScene.h和GameScene.cpp

      简单来说就是先搭建一个空的场景,为了以后一些游戏主题的层做一个容器,然后我们应该怎么处理呢?

然后呢……先贴代码~

//GameScene.h
#ifndef WeiXinDaPlane_GAME_SCENE_H__#define  WeiXinDaPlane_GAME_SCENE_H__#include "cocos2d.h"USING_NS_CC;class GameScene: public Scene{public:    GameScene();    ~GameScene();    virtual bool init();           //这是二段式的设计模式~就是把创建和初始化分开,详情请见子龙山人的博客~    CREATE_FUNC(GameScene);protected:private:};

简单的来说就是继承了Scene之后,创建一个空的Scene。

1、CREATE_FUNC(GameScene),上节已详述,就是cocos2d封装的一个创建和初始化的宏定义~。

2、init() 是继承Scene的,基本上GameScene的操作最后都是要从这里加入的~

然后是cpp,就是很简单的实现一下下,做一个空的容器而已~

#include "GameScene.h"GameScene::GameScene(){    }GameScene::~GameScene(){}bool GameScene::init(){    if (!Scene::init())    {        return false;    }    return true;}

 

三、WelcomeScene 切换到 GameScene

       大家是否还记得WelcomeScene那里是有个LoadIng的动画,我们需要做的就是在Loading动画后加入一个转场的操作,这里需要一个动作序列,大家请看代码~

auto animation = Animation::create();    animation->setDelayPerUnit(0.5f);    animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading1.png"));    animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading2.png"));    animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading3.png"));    animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("game_loading4.png"));    auto animate = Animate::create(animation);    auto animationDone = CallFunc::create(        [=](){            auto scene = GameScene::create();            auto transition = TransitionSlideInB::create(1, scene);            Director::getInstance()->replaceScene(transition);        });    auto sequence = Sequence::create(animate, animationDone, NULL);    gameLoading->runAction(sequence);

3、所谓的sequence就是一个动作的序列,你可以把多个连续的动作合并创建出一个sequence,然后让对象直接run这个sequence,就会把所有的动作按顺序执行一遍。

4、然后转场的关键地方就是在那个animationDone,这里是一个XXX表达式(小白~~不知道如何表达),就是一个隐式的函数(没有函数名),然后其中的内容就是,实例化一个GameScene,加入一个过场动画,然后让Dicrector执行这个动画就会转场啦~。

然后默默放出效果图~

image

然后就看下一节吧~

cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建