cocos2d-x 3.6版连连看载入资源
2016-03-14 10:05
495 查看
网上找了一个梦幻连连看的资源。大家能够百度一下。然后整理一下加到project里面去。包含声音和图片文件。后面解释怎样整理能够方便管理。
我不推荐在代码里面直接引用资源文件名称,我称之为硬编码。
做iOS开发的同学好像比較习惯这样,要用按个图片,直接用图片来索引。
我们将全部的资源文件用C风格的字符串做一个索引,放在一个头文件Resources.h里面。这样以后须要改动图片或者索引能够非常方便的改动。
好,先加这么多资源。
来看看AppDelegate.cpp,这是入口。看看入口函数
applicationDidFinishLaunching。
我这里写的比較简单。由于仅仅做了960X640和1136X640两种资源,所以仅仅做了这两个的适配。这里的适配比較简单粗暴,就是依据屏幕尺寸去载入相应的资源,同一时候设置相应的设计分辨率。
这不是重点。后面我会重点讲分辨率适配。这里仅仅是出来一个界面。重点是我们的连连看游戏。
最后两句创建了一个StartGame的场景,导演运行这个场景。
假设你看你创建的project,会发现源代码里面是用的Helloworld。是的,我们就是要干掉HelloWorld。创建我们自己的游戏场景。
右键点击xcode左側的Classes,选择新建文件。选择C++。取个名字StartScene。同一时候创建头文件。
好了。怎样来写这个StartScene。呢。一步一步来。
我先不讲原理,直接讲怎么搞。
首先要知道。我们这个连连会是神马样子的。
至少应该是这种,首页进来有个大背景。然后有些点缀物,比方蓝天白云神马的,然后有个button,点击開始游戏。
好,先看怎么来出一个背景。
StartScene.h
定义了几个函数。
createScene()是一个静态函数,用来创建一个场景。
init()函数比較怪,是一个虚函数,为什么会这样。后面讲。先这么写好了。
play(void)是我们自己定义的一个函数,看名字就知道干嘛的。
CREATE_FUNC(StartGame),是个神马东西,也是一个create函数,用来创建StartGame实例的。后面大家会知道这就是引擎里面用的最多的二阶段构造器。
再来看实现文件cpp
代码里面有写凝视。非常easy对不正确。
看跑起来会是个什么东西。
就是个海洋背景图嘛。
我不推荐在代码里面直接引用资源文件名称,我称之为硬编码。
做iOS开发的同学好像比較习惯这样,要用按个图片,直接用图片来索引。
我们将全部的资源文件用C风格的字符串做一个索引,放在一个头文件Resources.h里面。这样以后须要改动图片或者索引能够非常方便的改动。
好,先加这么多资源。
来看看AppDelegate.cpp,这是入口。看看入口函数
applicationDidFinishLaunching。
auto screenSize = glview->getFrameSize(); auto designSize = Size(960, 640); auto fileUtils = FileUtils::getInstance(); std::vector<std::string> searchPath; if (screenSize.width > 960) { designSize = Size(1136, 640); searchPath.push_back("Iphone5"); } fileUtils->setSearchPaths(searchPath); glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::SHOW_ALL); // create a scene. it's an autorelease object auto scene = StartGame::createScene(); // run director->runWithScene(scene);
我这里写的比較简单。由于仅仅做了960X640和1136X640两种资源,所以仅仅做了这两个的适配。这里的适配比較简单粗暴,就是依据屏幕尺寸去载入相应的资源,同一时候设置相应的设计分辨率。
这不是重点。后面我会重点讲分辨率适配。这里仅仅是出来一个界面。重点是我们的连连看游戏。
// create a scene. it's an autorelease object auto scene = StartGame::createScene(); // run director->runWithScene(scene);
最后两句创建了一个StartGame的场景,导演运行这个场景。
假设你看你创建的project,会发现源代码里面是用的Helloworld。是的,我们就是要干掉HelloWorld。创建我们自己的游戏场景。
右键点击xcode左側的Classes,选择新建文件。选择C++。取个名字StartScene。同一时候创建头文件。
好了。怎样来写这个StartScene。呢。一步一步来。
我先不讲原理,直接讲怎么搞。
首先要知道。我们这个连连会是神马样子的。
至少应该是这种,首页进来有个大背景。然后有些点缀物,比方蓝天白云神马的,然后有个button,点击開始游戏。
好,先看怎么来出一个背景。
StartScene.h
class StartGame : public cocos2d::Layer { public: static cocos2d::Scene* createScene(); virtual bool init(); void play(void); CREATE_FUNC(StartGame); };
定义了几个函数。
createScene()是一个静态函数,用来创建一个场景。
init()函数比較怪,是一个虚函数,为什么会这样。后面讲。先这么写好了。
play(void)是我们自己定义的一个函数,看名字就知道干嘛的。
CREATE_FUNC(StartGame),是个神马东西,也是一个create函数,用来创建StartGame实例的。后面大家会知道这就是引擎里面用的最多的二阶段构造器。
再来看实现文件cpp
#include "StartScene.h" #include "Resources.h" USING_NS_CC; Scene* StartGame::createScene() { // 创建一个场景实例 auto scene = Scene::create(); // 创建StartGame的实例,是一个Layer auto Layer = StartGame::create(); // 把StartGame的对象加入到场景里面 scene->addChild(Layer); return scene; } bool StartGame::init() { // 先调父类的init函数 // 这里能够知道,init()函数是一个继承下来的函数,并且是一个虚函数。子类能够重写这个函数 if ( !Layer::init() ) { return false; } // 获取屏幕可视区域 Size visibleSize = Director::getInstance()->getVisibleSize(); // 创建一个背景 auto background = Sprite::create(s_backgound); // 设置位置为中心位置 background->setPosition(visibleSize.width / 2, visibleSize.height / 2); // 加入到当前层 addChild(background); return true; } void StartGame::play() { }
代码里面有写凝视。非常easy对不正确。
看跑起来会是个什么东西。
就是个海洋背景图嘛。
相关文章推荐
- cocos2dx学习笔记之回调函数:定时器schedule,普通回调callfunc,菜单回调menu_selector
- 新建cocos2dx项目时批处理文件
- cocos2d tolua C++对象使用lua对象的变量,函数
- cocos2dx 截屏
- cocos2dx 自定义事件
- cocos2dx 手柄
- cocos2d-x 解决win32下 从文件对话框选择文件,显示在游戏中乱码的问题
- Windows8+VS201+Cocos2dx3.6环境搭建
- cocos2dx 浏览器
- cocos2d 高仿doodle jump 无源代码
- win7 vs2010 安装cocos2d-x
- cocos2d&cocos2dx学习资源
- cocos2d-x之 利用富文本控件解析xhml标签(文字标签,图片标签,换行标签,标签属性)
- cocos2dx 视频播放器
- cocos2d-x之利用富文本控件遍历xml
- Cocos2dx制作2048(2.数字方块的创建)
- Cocos2d-x 2048游戏教程 第一部分
- cocos2d-x之Box2d初试
- cocos2d-x 菜鸟实习生学习篇(二)helloworld完全注释
- cocos2dx 3.x 声音播放、音量调节