cocos2dx游戏开发——微信打飞机学习笔记(四)——GameScene的搭建
2024-08-23 05:52:02
一、创建文件
首先呢,就是那个创建新的.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执行这个动画就会转场啦~。
然后默默放出效果图~
然后就看下一节吧~
最新文章
- Linux SSH登录慢案例分析
- redis 学习笔记(2)-client端示例代码
- linux中权限的修改
- Aspose.Cells 设置背景颜色
- 【转链接】Handlebars模板引擎以及浅谈模板引擎的实现原理
- [HDOJ 5212] [BestCoder Round#39] Code 【0.0】
- Bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路 dijkstra,堆,A*,次短路
- jQuery中事件冒泡问题及处理
- Android 单指触控拖拽,两指触控缩放
- Linux CentOS 安装 httpd
- Http请求小结
- J2EE进阶(十)SSH框架整合常见问题汇总(一)
- SQLserver2008一对多,多行数据显示在一行
- react native输入框定位在底部(虚拟键盘弹起)
- java 调用 api接口
- [mysql] 随机查询 效率比较
- 开启Tomcat APR运行模式,优化并发性能
- call、apply、bind用法区别
- linux tomcat 启动报错 Cannot find /etc/bin/setclasspath.sh
- IOS NSNotificationCenter(通知 的使用)监听文本框的文字改变
热门文章
- sparkR操作HDFS上面的CSV文件
- win7 vmware 无法使用usb
- css的一些小技巧!页面视觉差!
- Summarize Series For Burying My College
- SGU 180 Inversions(离散化 + 线段树求逆序对)
- Unity3D研究院之自制批量关联材质与贴图插件
- [BZOJ3624][Apio2008]免费道路
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”
- java获得当前文件路径
- DrawText