在Cocos2D-x里面创建Tile Map地图是需要用到.tmx的地图文件的,那么创建Tile Map地图文件,我们可以通过地图编辑器来创建,地图编辑器可以在网站:http://www.mapeditor.org 上进行下载,然后通过地图编辑器就可以导入.tmx的地图文件。那么为什么我们不直接用图片作为地图呢,而是使用.tmx文件来创建地图。那么有一个很重要的原因就是因为使用Tile Map地图无论你的地图多大,内存占用只是每个不同Tile的总和,所以使用Tile Map是非常省内存的一种做法。当然了Tile Map地图的功能可以实现的效果要比单纯的图片要更加丰富,比如Tile Map是可以对地图进行分层等。

那么下面我们主要是讲怎么在游戏里面去使用地图文件。

1、在VS2012上面添加地图文件,这个和添加其他的图片资源文件的操作一样,复制到Asset文件夹,然后添加到项目里面,那么在这里要注意的一点是,把.tmx添加到项目的时候,它的content属性是false的,这时候需要我们手工把它改成true,否则地图会无法显示出来,如下图所示:

2、使用.tmx文件创建地图,然后就可以往地图上添加精灵了,操作精灵的运动,和把精灵在地图的那个一个层上面。

//创建地图

CCTMXTiledMap *map = CCTMXTiledMap::create("iso-test-zorder.tmx");

//在地图上添加精灵

map->addChild(cat, map->getChildren()->count() );

//更新精灵位于那个地图的层上

map->reorderChild(cat, newZ);

示例代码:

TestLayer::TestLayer()
{
//创建一个CCTMXTiledMap
CCTMXTiledMap *map = CCTMXTiledMap::create("iso-test-zorder.tmx");
addChild(map, , );
//获取地图的大小
CCSize s = map->getContentSize();
map->setPosition(ccp(,));
//在地图上添加精灵
cat = CCSprite::create("cat.png");
map->addChild(cat, map->getChildren()->count() );
//如果tile map中有多个层,把这些层加入其他对象中时一定要先retain
cat->retain();
int mapWidth = map->getMapSize().width * map->getTileSize().width;
cat->setPositionInPixels(ccp( mapWidth/,));
cat->setAnchorPoint(ccp(0.5f,)); //创建精灵运动的动画
CCActionInterval* move = CCMoveBy::create(, ccpMult(ccp(,), /CC_CONTENT_SCALE_FACTOR()));
CCActionInterval* back = move->reverse();
CCFiniteTimeAction* seq = CCSequence::create(move, back,NULL);
cat->runAction( CCRepeatForever::create((CCActionInterval*) seq) ); schedule( schedule_selector(TestLayer::repositionSprite) );
} void TestLayer::repositionSprite(ccTime dt)
{
CCPoint p = cat->getPositionInPixels();
CCNode *map = getChildByTag(); // there are only 4 layers. (grass and 3 trees layers)
// if tamara < 48, z=4
// if tamara < 96, z=3
// if tamara < 144,z=2 int newZ = - (p.y / );
newZ = max(newZ,);
//更新层次关系,底层会重新排序
map->reorderChild(cat, newZ);
}

运行的效果:

[Cocos2D-x For WP8]Tile Map创建地图的更多相关文章

  1. HTML5结合百度地图API创建地图应用

    具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid ...

  2. js调用百度地图API创建地图

    技术交流群:233513714 <html xmlns="http://www.w3.org/1999/xhtml"><head runat="serv ...

  3. js调用百度地图API创建地图,搜索位置

    实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...

  4. 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

    原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...

  5. 【百度地图API】建立全国银行位置查询系统(一)——如何创建地图

    原文:[百度地图API]建立全国银行位置查询系统(一)--如何创建地图 <摘要>你将在第一章中学会以下知识: 如何创建一个网页文件 怎样利用百度地图API建立一张2D地图,以及3D地图 如 ...

  6. 在slam_gmapping中使用Log数据创建地图

    本文介绍使用机器人记录的tf变换和激光扫描数据来建立2D地图.并在ROS的图形化模拟环境rviz中通过重新回放记录的数据作为机器人真实传感器采集的输入,来观测地图动态创建过程. 1.ROS gmapp ...

  7. 使用Leaflet创建地图模块

    背景 最近需要为某单位开发地图展示系统,因此开始涉略和使用Leaflet这个轻量级地图库. 创建基础地图需要以下几步 引入相关js和css文件,创建基础地图 <div id="map& ...

  8. 在 SharePoint 2013 中针对地理位置字段创建地图视图

    在 SharePoint 2013 中针对地理位置字段创建地图视图 了解如何通过在 SharePoint 2013 列表中使用地图视图来显示位置信息.您可以通过 SharePoint 用户界面 (UI ...

  9. cocos2dx - 创建地图及玩家(伪)

    接上一节内容:cocos2dx - 环境配置,项目创建 本节主要描述cocos中精灵的创建及点击事件的使用 打开创建好的test项目,看到下图的目录结构,真正的游戏逻辑路径在src下. AppDele ...

随机推荐

  1. Sublime Text + CTags + Cscope (部分替代Source Insight)

    CTags & cscope 下载: CTags+Cscope --- 我的百度云盘下载http://pan.baidu.com/s/1gfyPnuN ctags58.zip --- src ...

  2. Delphi中的函数指针判断是否为空

    delphi函数指针 只有@@p才代表了函数指针本身的地址   assigned(p) 判断是否为空 或者用 @p=nil 来判断函数指针是不是为空 Delphi中的函数指针实际上就是指针,只是在使用 ...

  3. Delphi面向对象的方法

    方法是属于一个给定对象的过程和函数,方法反映的是对象的行为而不是数据,前一篇提到的对象的两个重要的方法:构造方法和析构方法. 为了使对象能执行各种功能,你能在对象中定制方法 创建一个方法用两个步骤,首 ...

  4. Delphi面向对象编程

    一.面向对象介绍 OOP是使用独立的对象(包含数据和代码)作为应用程序模块的范例.虽然OOP不能使得代码容易编写,但是它能够使得代码易于维护.将数据和代码结合在一起,能够使定位和修复错误的工作简单化, ...

  5. Delphi函数参数传递 默认参数(传值)、var(穿址)、out(输出)、const(常数)四类

    Delphi的参数可以分为:默认参数(传值).var(传址).out(输出).const(常数)四类 可以对比C/C++的相关知识,类比学习. 1.默认参数是传值,不会被改变,例子 function ...

  6. 微软改名部再次大显神威——ASP.NET 5改名ASP.NET Core 1.0

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:在计算机科学领域只有两件难事:缓存不可用和命名.--Phil Karlton 今天,S ...

  7. JSON数据解析(转)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  8. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  9. iOS 钥匙串 指纹识别 get和Post请求的区别

    01-钥匙串 1. 通过系统提供的钥匙串功能可以在本地保存密码,系统使用AES的方式对密码加密 a. 查看Safari中保存的密码 2. 使用第三方框架SSKeychain把密码保存到钥匙串和获取钥匙 ...

  10. super一些要点

    package o6; class Grandparent { public Grandparent() { System.out.println("GrandParent Created. ...