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 작업 (추가, 삭제, 이동, 수축, 회전, 변색...) 을 할 수 있 습 니 다.모든 이 조작 들 은 애 태 적 으로 행 해 졌 다.이것 은 우리 가 게임 을 진행 하 는 과정 에서 지도 에 대한 동작 을 허용 하고 애 태 를 통 해 지도 상 태 를 바 꾸 어 게임 요정 이 환경 에 미 친 영향 을 나 타 낼 수 있다. 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[iOS] 맵(MKMapView)에 핀이 표시되지 않았을 때 확인Stack Overflow의 해시태그를 구독하니 "지도에 핀이 표시되지 않으니 도와주세요!"이런 문제를 자주 본다.대개 다음 3가지 유형의 원인이기 때문에 확인해야 할 부분을 정리해 보겠습니다. 의외로 설정을 잊어버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.