1 CCTMXObjectGroup的使用方法

为了取以下内容:

操作代码如下:

T27TileMapObject.h

#ifndef
__T27TileMapObject_H__

#define
__T27TileMapObject_H__

#include
"cocos2d.h"

#include
"cocos-ext.h"

#include
"TBack.h"

USING_NS_CC;

USING_NS_CC_EXT;

//格子地图对象层

class
T27TileMapObject :public
TBack

{

public:

CREATE_FUNC(T27TileMapObject);

bool
init();

static
CCScene* scene();

};

#endif

T27TileMapObject.cpp

#include
"T27TileMapObject.h"

CCScene*
T27TileMapObject::scene()

{

CCScene*
scene = CCScene::create();

T27TileMapObject *
layer = T27TileMapObject::create();

scene->addChild(layer);

return
scene;

}

bool
T27TileMapObject::init()

{

TBack::init();

CCTMXTiledMap *
map = CCTMXTiledMap::create("MarioMap1.tmx");

addChild(map);

//这里的objects是MarioMap1.tmx中的一个key

CCTMXObjectGroup*
objGroup = map->objectGroupNamed("objects");

CCArray*
objs = objGroup->getObjects();

CCObject*
obj;

CCTexture2D*
texture = CCTextureCache::sharedTextureCache()->addImage("Mushroom0.png");

CCSpriteFrame*
frame = CCSpriteFrame::createWithTexture(

texture,
CCRectMake(0,0,texture->getContentSize().width / 4,texture->getContentSize().height));

CCARRAY_FOREACH(objs,
obj)

{

//通过下面的方式获得object中的参数信息

CCDictionary*
dict = (CCDictionary*)obj;

const
CCString* name =
dict->valueForKey("name");

const
CCString* type =
dict->valueForKey("type");

const
CCString* x = dict->valueForKey("x");

const
CCString* y = dict->valueForKey("y");

if (type->m_sString ==
"mushroom")

{

//创建一个蘑菇怪Mushroom0.png

CCSprite*
sprite = CCSprite::createWithSpriteFrame(frame);

map->addChild(sprite);

sprite->setPosition(ccp(x->intValue(),y->intValue()));

sprite->setZOrder(10000);

}

//如果object对象的名字是Birthday,那么将执行以下的操作

if (type->m_sString ==
"BirthPoint")

{

CCSprite*
sprite = CCSprite::createWithSpriteFrame(frame);

map->addChild(sprite);

sprite->setPosition(ccp(x->intValue(),y->intValue()
- 16));

//如果不设置这一句,马里奥会在山后

sprite->setZOrder(10000);

//设置锚点

sprite->setAnchorPoint(ccp(0,0));

}

}

return
true;

}

运行结果:

2 TileMapObject的使用的更多相关文章

随机推荐

  1. Redis安装与卸载

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它支持丰富的数据类型,和高速的内存读写.正在逐步取代memca ...

  2. nginx方向代理

    nginx 的安装 # yum install nginx 新建配置文件 # vi /etc/nginx/conf.d/resume-xyz-8081.conf 配置 upstream resume ...

  3. [HNOI 2013]游走

    Description 题库链接 一个无向连通图,顶点从 \(1\) 编号到 \(N\) ,边从 \(1\) 编号到 \(M\) . 小Z在该图上进行随机游走,初始时小Z在 \(1\) 号顶点,每一步 ...

  4. [SDOI 2009]HH的项链

    Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝 壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此,他的项链变得 ...

  5. 【LSGDOJ 1333】任务安排 dp

    题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti.在每批任务开始 ...

  6. ●BZOJ 1855 [Scoi2010]股票交易

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1855 题解: DP,单调队列优化.(好久没做 DP题,居然还意外地想出来了) 定义 dp[i ...

  7. hdu 1542 线段树扫描(面积)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  8. poj2828 BuyTickets 线段树

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 17326   Accepted: 8601 Desc ...

  9. 使用webgl(three.js)搭建一个3D建筑,3D消防模拟——第三课

    项目背景 消防安全一直是各大都市关注的重要课题,在消防体系中,特别是高楼消防体系中,消防系统整体布控与监控,火情有效准确定位,防火器材定位,人员逃生路径规划,火情预警,消防演习都是特别重要的环节.所以 ...

  10. Java多线程volatile和synchronized总结

    volatile是轻量级的synchronized,在多处理器(多线程)开发中保证了共享变量的"可见性".可见性表示当一个线程修改了一个共享变量时,另外一个线程能读到这个修改的值. ...