cocos2d-X 节点(CCTileMapAtlas.h)API

时间:2023-02-07 20:31:36

本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-X 节点(CCTileMapAtlas.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
//cocos2d-x-3.0alpha0/cocos2dx/tilemap_parallax_nodes/

#ifndef __CCTILE_MAP_ATLAS__
#define __CCTILE_MAP_ATLAS__


#include "base_nodes/CCAtlasNode.h"

NS_CC_BEGIN

struct sImageTGA;
class Dictionary;

/**
 * @addtogroup tilemap_parallax_nodes
 * @{
 */

/** @brief TileMapAtlas 是 AtlasNode 的子类.
 
 它知道如何根据瓷砖呈现地图。
 瓷砖必须是PNG格式,而映射必须是一个TGA文件.
 
 有关格式的更多信息,请参阅这篇文章::
 http://www.cocos2d-iphone.org/archives/27
 
 AtlasNode 所有功能在 TileMapAtlas 里面都是有效的
 
 IMPORTANT:
 此类已废弃。它是之所以保持,仅仅是出于兼容性的考虑.
 你不应该使用这个类.
 Instead, use the newer TMX file format: TMXTiledMap
 相反,使用较新的TMX文件格式 : TMXTiledMap
 */
class CC_DLL TileMapAtlas : public AtlasNode
{
public:
    /** 使用 tile 文件(atlas)、一个地图文件、每个 tile 的宽度和高度(以点为单位)创建一个 TileMap
     tile 文件将使用 TextureMgr 加载.
     */
    static TileMapAtlas * create(const char *tile, const char *mapFile, int tileWidth, int tileHeight);
    /**
     * @js ctor
     */
    TileMapAtlas();
    /**
     * @js NA
     * @lua NA
     */
    virtual ~TileMapAtlas();
    
    /** 使用 tile 文件(atlas)、一个地图文件、每个 tile 的宽度和高度(以点为单位)初始化一个 TileMap.
     tile 文件将使用 TextureMgr 加载.
     */
    bool initWithTileFile(const char *tile, const char *mapFile, int tileWidth, int tileHeight);
    /** returns a tile from position x,y.
     目前只使用了 R 通道
     */
    Color3B getTileAt(const Point& position) const;
    CC_DEPRECATED_ATTRIBUTE Color3B tileAt(const Point& position) const { return getTileAt(position); };
    /** sets a tile at position x,y.
     目前只使用了 R 通道
     */
    void setTile(const Color3B& tile, const Point& position);
    /** dealloc the map from memory */
    void releaseMap();
    
    inline struct sImageTGA* getTGAInfo() const { return _TGAInfo; };
    inline void setTGAInfo(struct sImageTGA* TGAInfo) { _TGAInfo = TGAInfo; };
private:
    void loadTGAfile(const char *file);
    void calculateItemsToRender();
    void updateAtlasValueAt(const Point& pos, const Color3B& value, int index);
    void updateAtlasValues();
    
protected:
    //! x,y to atlas dictionary
    Dictionary* _posToAtlasIndex;
    //! 渲染的 tiles 号码
    int _itemsToRender;
    /** TileMap 信息 */
    struct sImageTGA* _TGAInfo;
};

// end of tilemap_parallax_nodes group
/// @}

NS_CC_END

#endif //__CCTILE_MAP_ATLAS__