coco2d地图显示相关类

摘自:知易教程

Cocos2d-iPhone 实现地图显示的有主要 2 组文件:

1) 负责整体地图的显示:CCTMXTiledMap.h, CCTMXTiledMap.m

2) 负责 xml 文件读取和解析:CCTMXXMLParser.h,CCTMXXMLParser.m

 

在实际游戏编程中,我们主要用到以下几个类:

1) CCTMXTiledMap

Layer 类的 init 凼数中通过以下的代码加载地图:(确保 PNG 文件不 tmx 在一起)

// Load level map 
gameWorld = [CCTMXTiledMap tiledMapWithTMXFile:@"Level1.tmx"];
 [self addChild:gameWorld z:0 tag:9];

 TMXTiledMap 是从 CocosNode 直接派生出来的。他的定义比我们预想的要简单:

@interface CCTMXTiledMap : CCNode
{
	CGSize				mapSize_;
	CGSize				tileSize_;
	int					mapOrientation_;
	NSMutableArray		*objectGroups_;
	NSMutableDictionary	*properties_;
	NSMutableDictionary	*tileProperties_;
}

 分析初始化凼数 init 如下:

-(id) initWithTMXFile:(NSString*)tmxFile
{
	NSAssert(tmxFile != nil, @"TMXTiledMap: tmx file should not bi nil");

	if ((self=[super init])) {
		
		[self setContentSize:CGSizeZero];

		CCTMXMapInfo *mapInfo = [CCTMXMapInfo formatWithTMXFile:tmxFile];
		
		NSAssert( [mapInfo.tilesets count] != 0, @"TMXTiledMap: Map not found. Please check the filename.");
		
		mapSize_ = mapInfo.mapSize;
		tileSize_ = mapInfo.tileSize;
		mapOrientation_ = mapInfo.orientation;
		objectGroups_ = [mapInfo.objectGroups retain];
		properties_ = [mapInfo.properties retain];
		tileProperties_ = [mapInfo.tileProperties retain];
				
		int idx=0;

		for( CCTMXLayerInfo *layerInfo in mapInfo.layers ) {
			
			if( layerInfo.visible ) {
				CCNode *child = [self parseLayer:layerInfo map:mapInfo];
				[self addChild:child z:idx tag:idx];
				
				// update content size with the max size
				CGSize childSize = [child contentSize];
				CGSize currentSize = [self contentSize];
				currentSize.width = MAX( currentSize.width, childSize.width );
				currentSize.height = MAX( currentSize.height, childSize.height );
				[self setContentSize:currentSize];
	
				idx++;
			}			
		}		
	}

	return self;
}
 

CCTMXTiledMap 直接由类 CCTMXLayer 来实现地图的每一个层。每一个 CCTMXLayer 的实例都是通过 Cocos2D-iPhone 标准的 AddChild 添加给 CCTMXTiledMap 的。

 

2) CCTMXlayer

CCTMXLayer 类定义如下:

@interface CCTMXLayer : CCSpriteBatchNode
{
	CCTMXTilesetInfo	*tileset_;
	NSString			*layerName_;
	CGSize				layerSize_;
	CGSize				mapTileSize_;
	uint32_t			*tiles_;			// GID are 32 bit
	NSUInteger			layerOrientation_;
	NSMutableArray		*properties_;
	
	unsigned char		opacity_; // TMX Layer supports opacity
	
	NSUInteger			minGID_;
	NSUInteger			maxGID_;
	
	// Only used when vertexZ is used
	NSInteger			vertexZvalue_;
	BOOL				useAutomaticVertexZ_;
	float				alphaFuncValue_;
	
	// used for optimization
	CCSprite		*reusedTile_;
	ccCArray		*atlasIndexArray_;
}
    显然,CCTMXLayer 对于“瓦片”图像块的管理是通过 CCSpriteSheet 来实现的。 因此,地图的每一个“瓦片”图像就是一个 CCSprite 对象。于是,每一个“瓦片”图 像都可以迚行任意的 CCSprite 操作(增加、删除、移劢、放缩、旋转、变色...)。所有 这些操作都是劢态迚行的。这就允许我们在游戏迚行过程中的对地图迚行劢态操作,通过劢态改变地图的状态来反映游戏精灵对环境产生的影响。 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cocos2d-iPhone是一个基于Objective-C的2D游戏开发框架,它支持在iPhone和iPad上进行游戏开发。Cocos2d-iPhone使用了OpenGL ES来加速渲染,并提供了一组强大的工具和,方便开发者创建高性能的移动游戏。 iWebBrowser是Cocos2d-iPhone框架中一个非常实用的工具,它可以在游戏中内嵌一个网页浏览器。通过iWebBrowser,开发者可以在游戏中直接展示网页内容,实现各种功能,比如游戏内置网页广告、帮助文档的展示等等。 使用iWebBrowser可以很方便地在游戏中加载和展示网页内容。它提供了加载URL、返回、刷新等常见的网页浏览器功能,并且可以自定义外观和布局。开发者可以根据需要,调整浏览器的大小、位置,使其更好地适应游戏界面。 在使用iWebBrowser的过程中,开发者可以根据游戏的需求,通过Cocos2d-iPhone的其他功能和特性,来增强浏览器的交互性和可玩性。比如,可以在浏览器加载完页面后,通过Cocos2d-iPhone提供的触摸事件来对页面上的元素进行交互操作,或者在游戏中嵌入自定义的按钮和控件,以提供更丰富的功能。 总之,Cocos2d-iPhone的iWebBrowser提供了一种简单而强大的方式,让开发者可以在游戏中内嵌一个网页浏览器,展示各种网页内容,并与游戏其他功能进行结合,提供更好的用户体验。无论是展示广告、加载帮助文档还是其他网页内容,iWebBrowser都是一个非常实用的工具。 ### 回答2: Cocos2d-iPhone是一个开源的2D游戏开发框架,用于iOS平台的游戏开发。它基于Objective-C语言编写,具有简单易用、跨平台、性能高效等特点。Cocos2d-iPhone提供了丰富的功能和工具,开发者可以利用它来创建各种型的2D游戏。 Web浏览器(iWebBrowser)是一种用于访问和浏览互联网上的网页的应用程序。在Cocos2d-iPhone中,我们可以通过使用内置的Web浏览器组件来实现游戏内嵌网页的功能。通过Cocos2d-iPhone的Web浏览器组件,我们可以将一个网页嵌入到游戏场景中,并且在游戏中实时显示和交互。 使用Cocos2d-iPhone的Web浏览器组件,开发者可以实现许多有趣的功能和效果。比如,我们可以在游戏中实时显示网络上的实时数据,或者在游戏中嵌入一些广告或者社交媒体的内容。通过Web浏览器组件,我们可以方便地加载和显示网络上的网页内容,并且可以在游戏中进行交互操作。 总之,Cocos2d-iPhone提供了内置的Web浏览器组件(iWebBrowser),使得在游戏中嵌入和显示网页成为可能。通过这个功能,开发者可以实现各种有趣的功能和效果,提升游戏的交互性和娱乐性。 ### 回答3: Cocos2d是一个流行的开源游戏开发引擎,适用于多平台的游戏开发。它是基于C++语言的,并且有支持多种编程语言的绑定,如Python和Lua。Cocos2d提供了丰富的功能和工具,使开发者能够轻松创建高品质的游戏。 iWebBrowser是Cocos2d中的一个,它是用于在游戏中展示网页内容的组件。iWebBrowser可以嵌入到游戏中的任何场景中,可以展示网页内容,并且可以通过Cocos2d的渲染系统将网页渲染到游戏窗口中。开发者可以利用iWebBrowser来实现一些与网页相关的功能,如展示游戏动态、显示游戏公告等。 Cocos2d提供了一系列的API来控制iWebBrowser的行为和显示。开发者可以通过这些API来加载指定的网页内容,设置网页的大小和位置,监听网页加载完成的事件等。同时,开发者也可以通过这些API来实现一些与网页交互的功能,如获取网页内容、执行网页上的JavaScript等。 iWebBrowser在编写游戏时非常有用,它允许开发者将网页内容无缝地集成到游戏中,提供了更加丰富的内容展示方式。无论是展示游戏内的一些信息,还是进行广告宣传,iWebBrowser都可以做到简单、高效的集成。开发者可以通过Cocos2d提供的API来灵活地控制iWebBrowser的显示与交互,以满足游戏的需求。 总之,Cocos2d iWebBrowser是Cocos2d游戏引擎中的一个组件,用于在游戏中展示网页内容,并提供了一系列的API来控制其行为和交互。这个组件能够帮助开发者更好地展示游戏内的信息和进行广告宣传等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值