Iphone 如何在tmx地图中提取多段线点?

Iphone 如何在tmx地图中提取多段线点?,iphone,objective-c,ios,cocos2d-iphone,Iphone,Objective C,Ios,Cocos2d Iphone,地图上的信息是: <objectgroup name="Waypoint" width="32" height="24"> <object name="waypointsline" x="843" y="3"> <polyline points="0,0 -13,130 -39,202 -69,237 -125,262 -162,295 -189,340 -184,376 -166,411 -124,453 -98,484 -78,529 -78

地图上的信息是:

     <objectgroup name="Waypoint" width="32" height="24">
  <object name="waypointsline" x="843" y="3">
   <polyline points="0,0 -13,130 -39,202 -69,237 -125,262 -162,295 -189,340 -184,376 -166,411 -124,453 -98,484 -78,529 -78,598 -80,659 -101,689 -200,695 -317,700 -453,696 -534,693 -566,656 -582,622 -585,563 -586,488 -577,428 -550,335 -547,284 -565,225 -599,190 -675,171 -751,164 -799,133 -829,93 -842,17"/>
  </object>
 </objectgroup>

它返回nil。

您的数据是
XML
格式的,所以您所要做的就是解析
XML

如果是Mac OS X,我建议您选择
NSXMLDocument
,但由于您想要的是特定于iOS的,那么您的下一个赌注将是
NSXMLParser

然而,仍然有一种更简单的方法

下载此文件:

然后:

NSDictionary *dic = [XMLReader dictionaryForXMLString:myxml error:nil];

更新


要获取XML字符串数据,请执行以下操作:

NSString* filepath = [[NSBundle mainBundle] pathForResource:@"map" ofType:@"tmx"];
NSString* myxml = [NSString stringWithContentsOfFile:filepath
                                            encoding:NSUTF8Encoding
                                               error:nil];

TMX中的多段线和多边形在2.0-rc0版的cocos2d iphone中引入:

[新]TileMap:从对象中解析多边形、多边形线和gid(问题#1311)

如果您使用的是比2.0-rc0更新的版本,我想您可以通过以下类似方式访问这些点:

CCTMXObjectGroup *objectGroup = [tileMapLayer objectGroupNamed:@"someGroup"];
NSMutableDictionary *waypoints = [[objectGroup objectNamed:@"waypointsline"];
NSString *v = [waypoints objectForKey:@"polylinePoints"];
有关更多详细信息,请参阅:

  • (这篇文章中的分类实现似乎对之前的2.0-rc0版本有所帮助)

谢谢。我不熟悉ios和cocos2d编程,我想知道是否有一种简单的方法可以做到这一点,比如使用
CCTMXObjectGroup
或其他什么。@Arty我建议的方法非常简单-你只需包含2个文件(在我发给你的下载链接中提供)并只编写一行代码…:-)抱歉,还有一个问题:我如何获取
myxml
,我使用
CCTMXTiledMap
加载xml,@Arty您在问题中提到的“地图中的信息”是从哪里获得的?它在一个文件中吗?是的,它在一个名为map.tmx的文件中,我使用了
self.tileMap=[CCTMXTiledMap tiledmap-withtmxfile:@“map.tmx”]加载它,所以我没有字符串。好吧,我想我的答案是因为没有使用Cocos2d。。。好的!:-)我使用您的代码,
[dict objectForKey:@“polygonPoints]”编辑了地图中的信息
返回nil。很抱歉,对于您的案例,它应该是
polylinePoints
。我有一个错误:)我刚刚发现我的cocos2d版本是1.0.1,所以它不工作。谢谢你的回答,我稍后会尝试:)我已经相应地更新了答案中的代码。因此,在尝试此操作之前,您可能需要升级cocos2d。请注意版本之间的差异:。我认为现在将其解析为XML(比如@Dr.Kameleon)将是一个不错的选择。
CCTMXObjectGroup *objectGroup = [tileMapLayer objectGroupNamed:@"someGroup"];
NSMutableDictionary *waypoints = [[objectGroup objectNamed:@"waypointsline"];
NSString *v = [waypoints objectForKey:@"polylinePoints"];