cocos2d-xで、CCTMXTilesMapを使っている場合の話です。
地図情報を”Tiles”というアプリで作成し、出来上がったtmxファイルを
CCTMXTiledMapで読み込み、画面へ展開します。
Tilesではマップ情報をレイヤーで管理できるため、
あらかじめレイヤーを複数作成しておいて、後で少しずつ入力していく方法をとりたいのですが、
レイヤー内にブロックが一つもなかった場合、CCTMXTilesMapへの読み込み時にエラーが出てうまくいきません。
これを修正したコードをのせておきます。
ブロックが配置されていないレイヤーがあっても、読み込みと表示が出来るようにはなります。
CCSpriteBatchNode.cpp #668
◎ 変更前
| 
					 668  | 
						    if (! m_pobTextureAtlas->getTexture()->hasPremultipliedAlpha())  | 
					
◎ 変更後
| 
					 668 669  | 
						    if( ! m_pobTextureAtlas->getTexture() ) return;     if (! m_pobTextureAtlas->getTexture()->hasPremultipliedAlpha())  | 
					
CCTMXTiledMap.cpp #132
◎ 変更前
| 
					 132 133  | 
						    CCTMXTilesetInfo *tileset = tilesetForLayer(layerInfo, mapInfo);     CCTMXLayer *layer = CCTMXLayer::create(tileset, layerInfo, mapInfo);  | 
					
◎ 変更後
| 
					 132 133 134  | 
						    CCTMXTilesetInfo *tileset = tilesetForLayer(layerInfo, mapInfo);     if( ! tileset ) return( NULL );     CCTMXLayer *layer = CCTMXLayer::create(tileset, layerInfo, mapInfo);  | 
					
CCTMXTiledMap.cpp #217
◎ 変更前
| 
					 217 218  | 
						                CCTMXLayer *child = parseLayer(layerInfo, mapInfo);                 addChild((CCNode*)child, idx, idx);  | 
					
◎ 変更後
| 
					 217 218 219  | 
						                CCTMXLayer *child = parseLayer(layerInfo, mapInfo);                 if( ! child ) continue;                 addChild((CCNode*)child, idx, idx);  | 
					
※開発者ではありませんので、この修正が正しいのかはわかりません

Leave a comment