cocos2d-x 3.6版连连看载入资源
网上找了一个梦幻连连看的资源。大家能够百度一下。然后整理一下加到project里面去。包含声音和图片文件。后面解释怎样整理能够方便管理。
我不推荐在代码里面直接引用资源文件名称,我称之为硬编码。
做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对不正确。
看跑起来会是个什么东西。
就是个海洋背景图嘛。
cocos2d-x 3.6版连连看载入资源的更多相关文章
- Android 绿豆蛙版连连看(简陋版)
(里面有六张绿豆蛙的图片) 1.选中会有红色框 2.可以直线连(横竖相邻或是横竖间隔空格) 3.可以拐一次弯连接 4.可以拐两次弯连接 5.连接时会有线显示 6.绿色代表进度条,蓝色代表时间条 imp ...
- UE4异步载入资源
转自:http://blog.ch-wind.com/ue4%E5%BC%82%E6%AD%A5%E8%BD%BD%E5%85%A5%E8%B5%84%E6%BA%90/ 所有的“硬”指针指向的资源都 ...
- 关于Cocos2d-x多线程异步载入资源的问题
我们通常使用CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("xxx.plist" ...
- cocos2d-x 3.6版连连看版本号控制
为了以后的开发和管理.源代码开发必须要使用版本号控制.我们当然选择git来做版本号控制了. 假设你在终端输入git,提示不是一个命令的话.那就说明你的机器没有安装git工具.那就安装一个,百度之有非常 ...
- Java版连连看
连连看大家应该都玩过,不多说直接上一个做好的界面截图吧,所有的功能都在上面的,要做的就只是如何去实现它们了. 差不多就是这个样子.先说一下大致的思路吧.首先编写基本的界面:把什么按钮啊,表格啊什么的都 ...
- cocos2d-x 3.6版连连看
写个连连看来讲游戏开发,我认为实例解说效果会好一些. 终端以下cd到源代码文件夹,敲命令: cocos new LLK -p com.goonear.llk -l cpp -d ./Goonear 脚 ...
- 【chrome】设置chrome允许WebGL从本地载入资源
找到chrome安装路径,然后创建一个快捷方式,右击该快捷方式,在 目标 输入框中加上-allow-file-access-from-files(前面加个空格),通过该快捷方式打开chrome就可以通 ...
- 【原创】面向对象版本地CPU资源占用监控脚本
前期准备: 1.python2.7环境 2.相关第三方库下载安装 脚本工作过程: 1.根据输入的进程名判断进程是否存在,如果不存在则进行等待,直到检测到进程PID,中途进程退出抛出异常,键入enter ...
- 问题分析——Maven打包后发版,静态资源找不到
一.背景 Xxl-Job-Admin(开源分布式调度中心)项目在本地运行正常,Jenkins发版到测试环境,发版成功后,打开管理页面,页面css.js找不到. 怀疑是Maven没有把静态资源打包进去导 ...
随机推荐
- 对ajax的hack的分析
先上原文链接:对jQuery ajax请求成功(失败)回调执行前的统一处理(兼容较老版本jQuery) 原文中已经提到了使用场景了,我觉得这非常适合单页面应用,还有backbone应用中.毕竟ajax ...
- birt报表中使用多个数据集。
这个问题困扰了几天,也没搜到答案,由于工作需要,创建了两个数据集和两个表格,第一个数据集和表格之间没有任何问题.但是第二个数据集拖过去就显示不可用,除非拖到表格外面,当然也就没用了.一朋友说拖一个网格 ...
- Hibernate中session的产生的方式
* session的产生的方式 * 1. sessionFactory.openSession 每次都会新创建一个session,只要新创建一个session,hiber ...
- 跟我学android-Notification
Notification 可以理解为通知的意思,会出现在通知栏,比如来了一条短信 使用 Notification 有以下3个步骤: 1. 创建 NotificationManager的对象 2.为No ...
- 【USACO 2.1.3】三值的排序
[题目描述] 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候.在这个任务中可能的值只有三种1,2和3.我们用交换的方法把他排 ...
- Python标准库--os模块
这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行.一个例 ...
- javaScript高程第三版读书笔记
看完<dom编程艺术>现在准备读进阶版的js高程了,由于篇幅较长,所以利用刚看完<dom编程艺术>学到的知识写了段JavaScript代码,来折叠各章的内容.并且应用到了< ...
- hadoop+eclipse集群搭建及测试
前段时间搭了下hadoop,每次都会碰到很多问题,也没整理过,每次搜索都麻烦,现在整理下 一.准备工作 1.准备俩计算机,安装linux系统,分别装好jdk(虚拟机操作一样) nano /etc/ho ...
- MLlib-分类与回归
MLlib支持二分类,多酚类和回归分析的多种方法,具体如下: 问题类别 支持方法 二分类 线性支持向量机, 逻辑回归,决策树,朴素贝叶斯 多分类 决策树,朴素贝叶斯 回归 线性最小二乘,Lasso,r ...
- Autoit 获取运行目录
#include <File.au3> #include <MsgBoxConstants.au3> MsgBox($MB_SYSTEMMODAL, "", ...