一、创建文件

首先呢,就是那个创建新的.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(, 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执行这个动画就会转场啦~。

然后默默放出效果图~

然后就看下一节吧~

最新文章

  1. Linux SSH登录慢案例分析
  2. redis 学习笔记(2)-client端示例代码
  3. linux中权限的修改
  4. Aspose.Cells 设置背景颜色
  5. 【转链接】Handlebars模板引擎以及浅谈模板引擎的实现原理
  6. [HDOJ 5212] [BestCoder Round#39] Code 【0.0】
  7. Bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路 dijkstra,堆,A*,次短路
  8. jQuery中事件冒泡问题及处理
  9. Android 单指触控拖拽,两指触控缩放
  10. Linux CentOS 安装 httpd
  11. Http请求小结
  12. J2EE进阶(十)SSH框架整合常见问题汇总(一)
  13. SQLserver2008一对多,多行数据显示在一行
  14. react native输入框定位在底部(虚拟键盘弹起)
  15. java 调用 api接口
  16. [mysql] 随机查询 效率比较
  17. 开启Tomcat APR运行模式,优化并发性能
  18. call、apply、bind用法区别
  19. linux tomcat 启动报错 Cannot find /etc/bin/setclasspath.sh
  20. IOS NSNotificationCenter(通知 的使用)监听文本框的文字改变

热门文章

  1. sparkR操作HDFS上面的CSV文件
  2. win7 vmware 无法使用usb
  3. css的一些小技巧!页面视觉差!
  4. Summarize Series For Burying My College
  5. SGU 180 Inversions(离散化 + 线段树求逆序对)
  6. Unity3D研究院之自制批量关联材质与贴图插件
  7. [BZOJ3624][Apio2008]免费道路
  8. error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”
  9. java获得当前文件路径
  10. DrawText