2012-04-27 73 views
1

在地圖信息是:如何提取tmx貼圖中的折線點?

 <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> 

我怎麼能提取他們在Objective-C?

我想:

NSMutableDictionary *waypoints = [objects objectNamed:@"waypointsline"]; 
if(waypoints) { 
    NSString* v = [waypoints valueForKey:@"waypointsline"]; 
} 

而且它返回零。

回答

2

折線和多邊形TMX分別介紹了cocos2d-iphone版本2.0 RC0:

[NEW ] TileMap:從對象解析多邊形,polilines和gid(問題#1311)

如果您使用較新的版本比2.0 RC0,我想你可以通過類似的東西訪問點:

CCTMXObjectGroup *objectGroup = [tileMapLayer objectGroupNamed:@"someGroup"]; 
NSMutableDictionary *waypoints = [[objectGroup objectNamed:@"waypointsline"]; 
NSString *v = [waypoints objectForKey:@"polylinePoints"]; 

有關詳細信息,請參閱:

+0

嗯,我想我的答案是不曾與Cocos2d合作過...很好! :-) – 2012-04-27 08:53:22

+0

我使用你的代碼編輯了map中的信息,'[dict objectForKey:@「polygonPoints」];'返回nil。 – Arty 2012-04-27 09:06:39

+0

對不起,它應該是'polylinePoints'您的情況。我有一個錯誤:) – Hailei 2012-04-27 09:09:59

0

您的數據是XML格式,所以你只需要解析那個XML

如果是Mac OS X,我建議你去NSXMLDocument,但因爲你想要的是iOS特定的,那麼你的下一個賭注NSXMLParser

但是,仍然是一個更簡單的方法 ...

下載這樣:https://github.com/Insert-Witty-Name/XML-to-NSDictionary

然後:

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

UPDAT Ë


爲了得到你的XML字符串數據:

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

謝謝。我是新來的ios和cocos2d編程,我想知道是否有一個簡單的方法來做到這一點,就像使用'CCTMXObjectGroup'什麼的。 – Arty 2012-04-27 08:39:16

+0

@Arty我建議的方式**真的很容易 - 你所要做的就是包括2個文件(可以在我發給你的下載鏈接中)並且只寫**一行代碼** ... :-) – 2012-04-27 08:40:22

+0

對不起另一個問題:我怎樣才能得到'myxml',我用'CCTMXTiledMap'來加載xml ,, – Arty 2012-04-27 08:43:19