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(, 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执行这个动画就会转场啦~。
然后默默放出效果图~

然后就看下一节吧~
cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建的更多相关文章
- cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...
- cocos2dx游戏开发——微信打飞机学习笔记(七)——Enemy的搭建
一.文件创建~ Enemy.h Enemy.cpp 二.How to do? 由于我是已经完成成个游戏的功能,所以我会将游戏中enemy所需要的很多功能基本上都先考虑到了,如果大家自己在做的时候也许没 ...
- cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备
一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x G ...
- cocos2dx游戏开发——微信打飞机学习笔记(九)——BulletLayer的搭建
一.创建文件~ BulletLayer.h BulletLayer.cpp 二.How to do? (1)实例化BulletLayer方法的实现~ Bullet(PlayerLayer* temp) ...
- cocos2dx游戏开发——微信打飞机学习笔记(八)——EnemyLayer的搭建
一.创建文件= = EnemyLayer.h EnemyLayer.cpp Ps:我绝对不是在凑字数~. 二.How to do? (1)一些宏 ...
- cocos2dx游戏开发——微信打飞机学习笔记(五)——BackgroundLayer的搭建
一.创建文件~ 文件名:BackgroundLayer.h BackgroundLayer.cpp 架构就跟前面的一样,我就直接进入正题 啦,而且github有完整代码,欢迎下载~ 二.创建滚动的背景 ...
- cocos2dx游戏开发——微信打飞机学习笔记(十)——碰撞检测的搭建
一.七说八说 大家都发现了= =,做了那么多,发现就是摆设,完全没有打飞机的感觉,没有实现碰撞的监测.比如说呢,子弹和敌机,玩家与敌机就是需要有碰撞检测的说,然后在这篇我想会很长很长的教 ...
- cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架
一.游戏的基本框架: WelcomeScene ——> GameScene ——> GameOverScene || ...
- cocos2dx游戏开发——微信打飞机学习笔记(六)——PlayerLayer的搭建
一.创建文件~ PlayerLayer.h PlayerLayer.cpp 一般类名都会和文件名有关系的~(在这里当然是一样) 二.How to do? 1.首先就是放一个飞机~ CC_SYNTHES ...
随机推荐
- C# 三种实现抖屏的方式
//int a = -2; //this.BringToFront(); //for (int i = 0; i < 20; i++) //{ // a = -a; // this.Locati ...
- 论文的构思!姚小白的html5游戏设计开发与构思----给审核我论文的导师看的
此处只为笔记 游戏么基本上确定是用canvas做个能一只手玩的游戏!基本打飞机之类的.毕竟手机也就上下班玩玩的.上下班么基本就是一只手拉着扶手一只手撸啊撸! 当然啦,如果能搞出超级牛逼的游戏,比如刺客 ...
- 注意页面上的时间戳可能会成为bd快照的时间_快照不更新的原因
之前在创建内容的时候,为了提高说服力,添加了一个原始文章的地址**.com.cn/2013-08/22/content_**.htm,当时写文章是在12月份,单快照直接变成原始文章的时间戳8.22
- Junit4.x扩展:运行指定方法
相信很多道友搞开发的一般都会用到Junit单元测试工具,不知道大家有没有遇到一个这样的问题: 有的单元测试用例有很多@Test方法,甚至有的方法会执行很长时间,只能空等执行.而实际上我们只需要运行其中 ...
- Poj 1061 青蛙的约会(扩展GCD)
题目链接:http://poj.org/problem?id=1061 解题报告:两只青蛙在地球的同一条纬度线上,选取一个点位坐标轴原点,所以现在他们都在同一个首尾相连的坐标轴上,那么他们现在的位置分 ...
- Java修改数组长度
java中没有关于修改数组长度的api,在此本人提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength().详细见代码. [java] view plai ...
- macosx zsh下安装rvm和ruby
1)curl -L get.rvm.io | bash -s stable 2)把下面一行加到~/.zshrc中: [[ -s "$HOME/.rvm/scripts/rvm" ] ...
- Java异常的栈轨迹fillInStackTrace和printStackTrace的用法
本文转自wawlian 捕获到异常时,往往需要进行一些处理.比较简单直接的方式就是打印异常栈轨迹Stack Trace.说起栈轨迹,可能很多人和我一样,第一反应就是printStackTrace()方 ...
- discuz 帖子模块用到的表及自动发帖函数
最近在做一个discuz的插件,由于需要程序自动生成并调用discuz已经存在插件的帖子.然而这就相当于自动发帖的功能了.网上找了一下,大部分都是通过curl模拟登陆,模拟发帖的,这显然不满足我的要求 ...
- ios 动态测定字符串frame : boundingRectWithSize函数
用NSString中的一个方法,第一个参数是text形成的frame的最大的宽度和高度, 其中的options比较关键 CGSize labelSize = [text boundingRectWit ...