标签:des style blog http io color ar os 使用
1 CCTMXTiledMap的使用
| TileMap.h | 
| #ifndef __T23TileMap_H__ #define __T23TileMap_H__ 
 #include "cocos2d.h" USING_NS_CC; 
 class TileMap :public CCLayer { public: CREATE_FUNC(TileMap); bool init(); static CCScene * scene(); 
 CCTMXTiledMap* _map; CCPoint Point2Tile(CCPoint ptGL); CCPoint Tile2PointLB(CCPoint ptTile); 
 bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); }; 
 #endif | 
| TileMap.cpp | 
| #include "TileMap.h" 
 CCScene * TileMap::scene() { CCScene * scene = CCScene::create(); TileMap * layer = TileMap::create(); scene->addChild(layer); return scene; } 
 bool TileMap::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的值 int gid = 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)); 
 return true; } 
 //将世界坐标转换成格子坐标 CCPoint TileMap::Point2Tile(CCPoint ptGL) { //获得每个格子的宽度 int dx = _map->getTileSize().width; //设置每个格子的高度 int dy = _map->getTileSize().height; 
 //将ptGL世界坐标转换成为本地坐标 CCPoint ptMap = _map->convertToNodeSpace(ptGL); //x轴方向的格子数 int x = ptMap.x / dx; //这里如果是最左下角算的的值是0,如果y轴上有2个格子,实际的格子的y是1 int y = ptMap.y / dy; //y方向上的总格子数 - 1 - y y = _map->getMapSize().height - 1 - y; 
 return ccp(x,y); } 
 //将格子坐标转换成为世界坐标 CCPoint TileMap::Tile2PointLB(CCPoint ptTile) { //这里的getMapSize().height不是像素值,而是y方向上的格子数 ptTile.y = _map->getMapSize().height - 1 - ptTile.y; 
 return ccp(ptTile.x * _map->getTileSize().width, ptTile.y * _map->getTileSize().height); } 
 bool TileMap::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { //获得被选中的坐标值 CCPoint pt = pTouch->getLocation(); 
 CCPoint ptTile = Point2Tile(pt); _map->layerNamed("layer_0")->setTileGID(0, ptTile); 
 return true; } | 
| 运行结果: | 
标签:des style blog http io color ar os 使用
原文地址:http://blog.csdn.net/tototuzuoquan/article/details/40819417