CCTMXTiledMap的使用
来源:互联网 发布:源码本地放到php打不开 编辑:程序博客网 时间:2024/04/30 03:09
1 CCTMXTiledMap的使用
TileMap.h
#ifndef__T23TileMap_H__
#define__T23TileMap_H__
#include"cocos2d.h"
USING_NS_CC;
classTileMap :publicCCLayer
{
public:
CREATE_FUNC(TileMap);
boolinit();
staticCCScene *scene();
CCTMXTiledMap*_map;
CCPointPoint2Tile(CCPointptGL);
CCPointTile2PointLB(CCPointptTile);
boolccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
};
#endif
TileMap.cpp
#include"TileMap.h"
CCScene *TileMap::scene()
{
CCScene *scene =CCScene::create();
TileMap *layer =TileMap::create();
scene->addChild(layer);
returnscene;
}
boolTileMap::init()
{
CCScene *scene =CCScene::create();
//初始化TMXTiledMap,要用一个.tmx
CCTMXTiledMap *map =CCTMXTiledMap::create("Round1.tmx");
addChild(map);
//获得CCTMXLayer的层:layer_0
CCTMXLayer*layer =map->layerNamed("layer_0");
//通过tileAt的方式获得格子,每个格子是一个精灵
CCSprite*sprite =layer->tileAt(ccp(2,2));
//通过tileGIDAT的方式获得gid的值
intgid =layer->tileGIDAt(ccp(2,2));
//让被选中的精灵跳动一下
sprite->runAction(CCJumpBy::create(200,ccp(0, 0), 50, 1000));
//将地图缩放
map->setScale(.5f);
layer->setTileGID(3,ccp(3,3));
_map =map;
setTouchEnabled(true);
//设置触摸方式
setTouchMode(kCCTouchesOneByOne);
CCSprite*sprite1 =CCSprite::create("anchor3.png");
_map->addChild(sprite1);
sprite1->setZOrder(1000);
sprite1->setPosition(Tile2PointLB(ccp(3, 2)));
sprite1->setAnchorPoint(ccp(0,1));
sprite1->setPosition(Tile2PointLB(ccp(3, 2)));
sprite1->setAnchorPoint(ccp(0,1));
returntrue;
}
//将世界坐标转换成格子坐标
CCPointTileMap::Point2Tile(CCPointptGL)
{
//获得每个格子的宽度
intdx =_map->getTileSize().width;
//设置每个格子的高度
intdy =_map->getTileSize().height;
//将ptGL世界坐标转换成为本地坐标
CCPointptMap =_map->convertToNodeSpace(ptGL);
//x轴方向的格子数
intx =ptMap.x / dx;
//这里如果是最左下角算的的值是0,如果y轴上有2个格子,实际的格子的y是1
inty =ptMap.y / dy;
//y方向上的总格子数 - 1 - y
y =_map->getMapSize().height - 1 - y;
returnccp(x,y);
}
//将格子坐标转换成为世界坐标
CCPointTileMap::Tile2PointLB(CCPointptTile)
{
//这里的getMapSize().height不是像素值,而是y方向上的格子数
ptTile.y = _map->getMapSize().height - 1 - ptTile.y;
returnccp(ptTile.x * _map->getTileSize().width,
ptTile.y * _map->getTileSize().height);
}
boolTileMap::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent)
{
//获得被选中的坐标值
CCPointpt =pTouch->getLocation();
CCPointptTile =Point2Tile(pt);
_map->layerNamed("layer_0")->setTileGID(0,ptTile);
returntrue;
}
运行结果:
- CCTMXTiledMap的使用
- 使用CCTMXTiledMap出错的问题!
- 使用CCTMXTiledMap出错的问题!
- CCTMXTiledMap使用的几个事项
- cocos2d-x tiledMap CCTMXTiledMap的使用
- (转载)CCTMXTiledMap使用的几个事项
- CCTMXTiledMap
- CCTMXTiledMap
- CCTMXTiledMap中使用.tmx地图编辑器需要注意的路径问题导致的热更后报错
- 关于CCTMXTiledMap不支持读取polyline的问题
- 关于CCTMXTiledMap中用到的gid
- 关于CCTMXTiledMap不支持读取polyline的问题
- 【Cocos2d-X开发学习笔记】第25期:游戏背景之瓦片地图集类(CCTMXTiledMap)的使用
- 关于CCTMXTiledMap 获得整体地图的宽高
- CCTMXTiledMap 移动地图出黑线白线的解决方案
- CCTMXTiledMap 介绍
- CCTMXTiledMap 说明
- cocos2d-x多个图块集下的CCTMXTiledMap要注意的一个小地方
- python 中迭代多个序列
- 字典序法求一个数组的全排列4
- 【Leetcode】Permutations II (Backtracking)
- 11.5行情分析
- 是否爱爱爱爱爱爱,错过了就不再回来。
- CCTMXTiledMap的使用
- 互联网融资模式大全
- 点击图片按钮 出来图片预览不兼容360极速模式 其他兼容
- 将图片转换成PDF格式的方法讲解
- SVN服务器搭建和使用(一)
- iOS Auto Layout
- 我要测什么?测试需求&其属性要点
- xml类对象序列化与反序列化
- ubuntu14.10 GNOME 设置系统背景色