titlemap在cocos2dx-2.x中的使用

加载map:

CCTMXTiledMap *map = CCTMXTiledMap::create("map3.tmx");
	map->setAnchorPoint( ccp(0.5f, 0.5f) );
	map->setPosition(ccp(visibleSize.width/2, visibleSize.height/2));
	this->addChild(map);

获取图层:

	CCTMXLayer *layer = map->layerNamed("layer1");//参数:地图层名称
	CCSize m = layer->getLayerSize();//地图大小
	CCLOG("LayerSize: %f, %f", m.width,m.height);

当有多个图层时,遍历图层:

	CCArray* pChildrenArray = map->getChildren();
	CCSpriteBatchNode* child = NULL;
	CCObject* pObject = NULL;
	CCARRAY_FOREACH(pChildrenArray, pObject)
	{
		child = (CCSpriteBatchNode*)pObject;

		if(!child)
			break;

		child->getTexture()->setAntiAliasTexParameters();
	}

获取对象:

<pre name="code" class="cpp">CCTMXObjectGroup *object = map->objectGroupNamed("object1");//参数:对象层名称
CCDictionary *sprite_object = object->objectNamed("sprite1");//参数:对象名称

 

当有对象层有多个对象时,遍历所有对象:

	CCArray *obs = object->getObjects();
	CCDictionary *dict=NULL;
	CCObject *ob = NULL;
	CCARRAY_FOREACH(obs, ob)
	{
		dict = (CCDictionary *)ob;
		if (!dict)
			break;
		int y = ((CCString*)dict->objectForKey("y"))->floatValue();
		int x = ((CCString*)dict->objectForKey("x"))->floatValue();
		int w = ((CCString*)dict->objectForKey("width"))->floatValue();
		int h = ((CCString*)dict->objectForKey("height"))->floatValue();
		CCLOG("sprite x: %d, y: %d, w: %d, h: %d", x, y, w, h);
	}

获取图素GID值并获取GID的键值:

 int tilegid = layer->tileGIDAt(tilecoord);//获取图素GID值 
 if (tilegid)      
 {          
	CCDictionary *properties  = map->propertiesForGID(tilegid)  ;//根据GID值获取图素属性键值集合           
	if (properties)                      
		const CCString *str = properties->valueForKey("value(GID)");//键值称  
}

视角跟随精灵移动:

void HelloWorld::setViewpointCenter(CCPoint position)  
{  
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();  
    float x = MAX(position.x, winSize.width / 2);  
    float y = MAX(position.y, winSize.height / 2);  
    x = MIN(x, (map->getMapSize().width*map->getTileSize().width) - winSize.width / 2);  
    y = MIN(y, (map->getMapSize().height*map->getTileSize().height)- winSize.height / 2);
 
    CCPoint acturalPosition = ccp(x, y);  
 
    CCPoint centerView = ccp(winSize.width / 2, winSize.height / 2);  
    CCPoint viewPoint = ccpSub(centerView, acturalPosition);
    this->setPosition(viewPoint);
     
 
}

将坐标转换成tile坐标:

CCPoint HelloWorld::tileCoordForPosition(CCPoint position)
{
    int x = position.x / map->getTileSize().width;
    int y = ((map->getMapSize().height * map->getTileSize().height) - position.y) / map->getTileSize().height;
    return ccp(x, y);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值