coco2d 지도 표시 관련 클래스

3733 단어 지도.
발췌: 지 역 교정
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];

 TMXTiled Map 은 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 가 '기와' 이미지 블록 에 대한 관 리 는 CCSprite Sheet 을 통 해 이 루어 진 것 이다.따라서 지도의 모든 '기와 조각' 그림 은 CCSprite 대상 이다.따라서 모든 '기와' 그림 은 임의의 CCSprite 작업 (추가, 삭제, 이동, 수축, 회전, 변색...) 을 할 수 있 습 니 다.모든 이 조작 들 은 애 태 적 으로 행 해 졌 다.이것 은 우리 가 게임 을 진행 하 는 과정 에서 지도 에 대한 동작 을 허용 하고 애 태 를 통 해 지도 상 태 를 바 꾸 어 게임 요정 이 환경 에 미 친 영향 을 나 타 낼 수 있다. 
 
 

좋은 웹페이지 즐겨찾기