cocos2dx之CCTMXTiledMap
来源:互联网 发布:股票1272战法源码指标 编辑:程序博客网 时间:2024/05/16 15:30
CCTMXTiledMap:
瓦片上地图集类具有如下几个特性:
1,每个图素都是一个精灵
2,每个图素的精灵类在需要时调用tiltAt函数被创建
3.,每个图素都可以进行旋转缩放等设置
4,在运行时可以添加和删除
5,可以修改Z轴顺序来改变遮挡关系
6,每个图素都可以设置锚点
7.,每个层都可以添加节点
8,每个图素都可以有唯一的标签
9,每个图素都可以有唯一的Z轴值
如下在利用工具创建了一个tmx文件,我们利用CCTMXTiledMap类来解析它,例子代码如下:
void MyMapLayer::initLayer() { CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCTMXTiledMap *map = CCTMXTiledMap::create("TileMaps/orthogonal-test4.tmx"); this->addChild(map, 1, 1); map->setAnchorPoint(ccp(0.5f, 0.5f)); map->setPosition(ccp(winSize.width / 2.0f, winSize.height / 2.0f)); CCArray *arratSprite = map->getChildren(); // get the sprite objects from the map int iCount = arratSprite->count(); CCSpriteBatchNode *batchChild = NULL; CCObject *object = NULL; CCARRAY_FOREACH(arratSprite, object) { batchChild = (CCSpriteBatchNode *)(object); if(batchChild == NULL) { break; } batchChild->getTexture()->setAntiAliasTexParameters(); // set the sprite抗锯齿 } map->setScale(2.0f); // arrayAllSprites = CCArray::create(4); mapLayer = map->layerNamed("Layer 0"); CCSize layerSize = mapLayer->getLayerSize(); CCSprite *sprite = mapLayer->tileAt(ccp(0, 0));//获得相应位置的精灵 arrayAllSprites->addObject(sprite); mapLayer->removeChild(sprite, true); sprite = mapLayer->tileAt(ccp(0, layerSize.height - 1)); arrayAllSprites->addObject(sprite); mapLayer->removeChild(sprite, true); sprite = mapLayer->tileAt(ccp(layerSize.width - 1, layerSize.height - 1)); arrayAllSprites->addObject(sprite); mapLayer->removeChild(sprite, true); sprite = mapLayer->tileAt(ccp(layerSize.width - 1, 0)); arrayAllSprites->addObject(sprite); mapLayer->removeChild(sprite, true); removeSprite(1);}
再举个例子,我们让它取得精灵在layer层进行穿梭:
CCSprite *sprite = mapLayer->tileAt(ccp(0, 0)); arrayAllSprites->addObject(sprite); CCActionInterval *action = CCMoveBy::create(4, ccp(50, -50)); sprite->runAction(CCRepeatForever::create(dynamic_cast<CCActionInterval *>(CCSequence::create(action, action->reverse(), NULL)))); float width_size = layerSize.width / 14;//这里要注意了,我这里取得的是像素点的大小 CCSprite *sprite1 = mapLayer->tileAt(ccp(width_size, 0)); mapLayer->reorderChild(sprite1, 10); CCActionInterval *action1 = CCMoveBy::create(4, ccp(50, 50)); sprite1->runAction(CCRepeatForever::create(dynamic_cast<CCActionInterval *>(CCSequence::create(action1, action1->reverse(), NULL))));
在tmx地图中,每一个tile其实就是一个CCSprite,我们都可以通过CCTMXLayer根据tile的坐标获取它的CCSprite,并对tile进行调整。
还可以利用CCTMXObjectGroup来获取TMX中的Objects,例子代码:
CCTMXTiledMap *map = CCTMXTiledMap::create(/*"TileMaps/iso-test-zorder.tmx"*/"TileMaps/ortho-objects.tmx");
map->setAnchorPoint(ccp(0.5f, 0.5f));
map->setPosition(ccp(winSize.width / 2.0f, winSize.height / 2.0f + 150));
CCTMXObjectGroup *group = map->objectGroupNamed("Object Group 1");
CCArray *arraySprite = group->getObjects();
- cocos2dx之CCTMXTiledMap
- cocos2dx进阶学习之CCTMXTiledMap
- cocos2dx之砖块地图研究——TiledMap,CCTMXTiledMap,CCTMXLayer,CCTMXObjectGroup
- cocos2dx入门教程一CCTMXTiledMap和CCTileMapAtlas
- CCTMXTiledMap
- CCTMXTiledMap
- 瓦片地图类之CCTMXTiledMap
- 瓦片地图类之CCTMXTiledMap
- 关于cocos2dx,多个图块集下的CCTMXTiledMap要注意的一个小地方
- CCTMXTiledMap 介绍
- CCTMXTiledMap 说明
- Cocos2D-x游戏开发之十五:CCTMXTiledMap地图的基础实例
- Cocos2d-x CCTMXTiledMap类
- cocos2d - 地图 CCTMXTiledMap
- CCTMXTiledMap的使用
- 【Cocos2d-X开发学习笔记】第25期:游戏背景之瓦片地图集类(CCTMXTiledMap)的使用
- Cocos2dx---之粒子系统
- Cocos2dx 之 ButtonSprite
- CustomValidator控件
- 广州传智播客老师分享:学了.Net能做什么开发
- Android 垂直滑动ViewPager实现
- ios开发之倒计时实现的两种方法
- 使用PHPMailer发送带附件并支持HTML内容的邮件
- cocos2dx之CCTMXTiledMap
- Struts2的原理及应用
- MySql数据库出现表锁等待超时的一…
- Android 自定义权限
- 中国大数据技术与产业发展白皮书——2.5金融与大数据(读书笔记)
- AJAX步步精心系列(一)AJAX简介
- 常见,常用的名词缩写 20131224
- Azure Storage架构介绍
- HTML5 创建手机滚珠子小游戏 (一)