xml を介して Objective-C に自分のレベルをロードしようとしています。
レベル エディターから出力された xml のスタイルを次に示します。
<level>
<entity>
<name>grey</name>
<id>5</id>
<body>false</body>
<x>0.0</x>
<y>0.0</y>
<rotation>0.0</rotation>
</entity>
<entity>
<name>grey</name>
<id>5</id>
<body>false</body>
<x>0.0</x>
<y>0.0</y>
<rotation>0.0</rotation>
</entity>
</level>
各ゲーム オブジェクトは、XML では独自のエンティティ (ゲームに読み込まれるとスプライト) として認識されます。したがって、解析が行われるとき、各エンティティまたは CCSprite は独自の x と y を持つ必要があります。
各エンティティに名前、x、y、および回転があるように、パーサーが xml ドキュメントをトラバースするようにします。他の要素はまだ気にしていません。
私は何時間もの間、NSXMLパーサーで物事を立ち上げて実行しようと試みてきましたが、これまでのところ運がありません..これまでに試したことは次のとおりです。
NSString* currentElement;
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
currentElement = elementName;
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if([currentElement isEqualToString:@"name"]){
NSLog(@"Name found: %@", string);
}
}
これは一部の要素で機能しますが、問題が見つかりました文字が複数回呼び出され、名前の文字列が空白になることがあります。
私がやろうとしているのは、要素「名前」が見つかったときに、現在のエンティティをシーンに追加するメソッドを呼び出して、「名前」、「X」、および「Y」要素をパラメータとして取りたいということです。