0

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」要素をパラメータとして取りたいということです。

4

0 に答える 0