一、TMXTiledMap类

cocos2dx提供了TMXTiledMap类来管理tiled瓦片地图,主要包括地图层、瓦片信息等,其主要方法、属性如下:

class CC_DLL TMXTiledMap : public Node
{

    // 使用.tmx格式的文件创建瓦片地图
    static TMXTiledMaP* create(const std::string& tmxFile);
  
/**
 * 获取瓦片地图的属性信息
 **/
    // 获取瓦片地图的指定名称的属性值
    Value getProperty(const std::string& propertyName) const;
    // 获取瓦片地图的所有属性(键-值对)
    void setProperties(const ValueMap& properties); // 可以修改属性
    ValueMap& getProperties();
  
    // 获取瓦片地图(单位:瓦片数量)
    void setMapSize(const Size& mapSize);
    Size& getMapSize() const;
    // 获取单个瓦片的尺寸(单位:像素)
    void setTileSize(const Size& tileSize);
    Size& getTileSize() const;
  
    // 通过GID获取图块的属性,返回Value字典
    // 其实返回的是:ValueMap,即(键-值对)
    Value getPropertiesForGID(int GID) const;
  
/**
 * 获取地图层、对象层
 **/
    // 获取指定名称的地图层 TMXLayer
    TMXLayer* getLayer(const std::string& layerName) const;
  
    // 获取指定名称的对象层 TMXObjectGroup
    TMXObjectGrouP* getobjectGroup(const std::string& groupName) const;
    // 获取瓦片地图的所有对象层,返回对象数组 Vector<TMXObjectGrouP*>
    void setobjectGroups(const Vector<TMXObjectGrouP*>& groups);
    Vector<TMXObjectGrouP*>& getobjectGroups() const;
	
    // 瓦片地图的尺寸,以瓦片数量为单位
    Size _mapSize;
    // 瓦片的尺寸,以瓦片像素为单位
    Size _tileSize;
};

二、TMXLayer类

TMXLayer类管理tiled的地图层,包含该地图层中的每个瓦片的信息,而每一个瓦片都被表示成精灵,其主要方法、属性如下:

class CC_DLL TMXLayer : public SpriteBatchNode 
{
/**
 * 获取地图层的属性信息
 **/  
    // 获取地图层的名字
    void setLayerName(const std::string& layerName); // 可以重新设置地图层名字
    std::string& getLayerName();
  
    // 获取地图层的propertyName属性值
    Value getProperty(const std::string& propertyName) const;
    // 获取地图层的所有自定义属性字典(键-值对)
    void setProperties(const ValueMap& properties);
    ValueMap& getProperties();
  
    // 获取地图层尺寸,一般等于瓦片地图的尺寸(单位:瓦片数量)
    void setLayerSize(const Size& size);
    Size& getLayerSize() const;
    // 设置瓦片尺寸的大小,一般与瓦片地图的瓦片尺寸是一样的(单位:像素)
    void setMapTileSize(const Size& size);
    Size& getMapTileSize() const;
  
/**
 * 对地图层的瓦片进行操作
 **/
    // 获取指定tile坐标的瓦片(Sprite)
    Sprite* getTileAt(const Vec2& tileCoordinate);
  
    // 可通过调用如下方法对瓦片精灵进行删除:
    void removeTileAt(const Vec2& tileCoordinate);
    void removeChild(Node* child,bool cleanup) override;
  
    // 获取指定tile坐标的瓦片对应的OpenGL坐标位置
    Vec2 getPositionAt(const Vec2& tileCoordinate);
  
    // 设置指定tile坐标的瓦片,将其图片变为GID的图块。
    void setTileGID(uint32_t gid,const Vec2& tileCoordinate);
  
    // 获取指定tile坐标的瓦片所使用的图块的GID。
    uint32_t getTileGIDAt(const Vec2& tileCoordinate);
	
    // 地图层的名字
    std::string _layerName;
    // 地图层的尺寸,以瓦片数量为单位
    Size _layerSize;
    // 地图层的瓦片的尺寸,以瓦片像素为单位
    Size _mapTileSize;
};

三、TMXObjectGroup类

TMXObjectGroup类用于管理tiled地图中特殊的地图层,即对象层,包括所有的对象及其所有的属性,而每一个对象的所有属性被存储为ValueMap键-值对映射,其主要方法、属性如下:

class CC_DLL TMXObjectGroup : public Ref
{
/**
 * 获取对象层的属性信息
 **/  
    // 获取对象层的名称
    void setGroupName(const std::string& groupName); // 可以重新设置对象层名称
    std::string& getGroupName();
  
    // 获取对象层的propertyName属性值
    Value getProperty(const std::string& propertyName) const;    
    // 获取对象层所有属性(键-值对)
    void setProperties(const ValueMap& properties);
    ValueMap& getProperties();
  
    // 获取对象层指定的objectName对象,其所有属性被存储为ValueMap(键-值对)
    ValueMap getobject(const std::string& objectName) const;
    // 获取对象层的所有对象
    void setobjects(const ValueVector& objects);
    ValueVector& getobjects();
	
	// 对象层的名称
    std::string _groupName;
	// 所有的对象
    ValueVector _objects;
};

COCOS-Tiled地图类的更多相关文章

  1. Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)

    这篇文章主要介绍了Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios – 类中的extern NSString * const.

    嗨,我有这个头文件:执行:当我在.pch文件中导入头文件时,我可以在任何地方访问常量.但我试着了解发生了什么.我从不为此对象分配init,因此它们不能是实例常量.所以常量必须是“类对象常量对吗?但我认为类对象不能包含数据.谁能解释一下?解决方法那些外部变量是app级全局变量.它们没有作用于类,它们不限于类的实例.Objective-C不支持实例或类级别全局变量.如果需要类级别常量,则需要定义类方法

  3. Swift 3.0与C语言指针类型的桥接

    关于Swift与C语言指针类型的对应表可参考Apple官方的《UsingSwiftwithCocoaandObjective-C》文档。首先是Swift与C桥接的头文件内容:上述函数原型声明中,为了简化指针类型的讨论,我们都将它们声明为_Nonnull属性。

  4. 从Swift字符串转换为const char *

    我正在尝试将constchar*传递给从Swift中的Swift字符串转换而来的旧C库.这是我正在调用的C函数:如何将Swift字符串转换为此constchar类型?

  5. cocoa – 什么是CGSUpdateManager,为什么抱怨?

    当我升级到ElCapitan时,我开始看到同样的问题.我最终将它追溯到我的代码库中的某个深层,之前没有引起任何问题……我有一个流浪的电话:这之前一直是个问题…确保平衡这些调用…特别是在早期返回的函数中!

  6. 详细解析let和const命令

    这篇文章主要介绍了详细解析let和const命令,let和const是es6中新增的命令,一般let用来声明变量而const则用来声明常量,更多相关内容感兴趣的小伙伴可以参考一下

  7. php中static和const关键字用法分析

    这篇文章主要介绍了php中static和const关键字用法,结合实例形式分析了static和const关键字的功能、使用方法与相关注意事项,需要的朋友可以参考下

  8. 详解IOS宏与常量的使用(define,const)

    这篇文章主要介绍了详解IOS宏define与常量const的使用方法,适合IOS程序员参考,一起来学习下。

  9. javascript 变量声明 var,let,const 的区别

    这篇文章主要介绍了javascript 变量声明 var,let,const 的区别,变量声明,每种编程语言必不可少的语法,在javascript中,变量的声明相对其他语言来说,算是比较简单的。更多相关的具体内容需要的小伙伴可以参考一下

  10. Android集成高德地图详细介绍

    大家好,本篇文章主要讲的是Android集成高德地图详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部