Utilice ejemplos XML para explicar en Cocos2d-x

XML es un lenguaje de marcado extensible. En el desarrollo de juegos, a menudo se usa para guardar información del juego, como la puntuación más alta, el nivel del juego y otra información, y para describir algunos recursos. La primera vez que usé XML fue en "Creación de animaciones con CCAnimation". Cuando se usa el archivo plist para cargar la animación, se usa un archivo XML. El archivo plist es en realidad un archivo XML. El mapa de mosaicos se usa en Cocos2d-x (1) y el mapa de mosaicos se usa en Cocos2d-x (2). Después de guardar el mapa de mosaicos creado por el editor, obtendrá un archivo en formato tmx, que también es un archivo XML.

Los archivos XML también pueden resolver el problema de los códigos confusos en chino. Los códigos confusos de codificación china aparecen en Cocos2d-X debido a los diferentes métodos de codificación, que generalmente se utilizan en Windows.

VC se usa como IDE, VC usa codificación GTK y el chino usa codificación UTF-8. Debido a los diferentes métodos de codificación, el uso directo del chino en Cocos2d-X causará caracteres confusos, mientras que xml usa codificación UTF-8. Entonces, el uso de XML puede realizar la visualización de chino en Cocos2d-X.

No hablaré sobre temas teóricos. Si digo demasiado, no lo entenderé. Aquí hay algunos ejemplos para presentar la aplicación de XML en Cocos2d-X.

Ejemplo de programa 1: utilice CCUserDefault para leer la información en XML

Proceso de implementación:

1. Crea un archivo XML

2. Escriba la puntuación más alta en el archivo XML

3. Lea la puntuación más alta en el archivo XML

El código de creación del archivo XML:

// Guarda la puntuación más alta del juego en la memoria

CCUserDefault :: sharedUserDefault () -> setIntegerForKey ("Puntaje alto", 7000);

// Escribe la información de puntuación más alta del juego en el disco duro

CCUserDefault :: sharedUserDefault () -> flush ();

Después de una compilación exitosa, se generará un archivo xml llamado UserDefault.xml en el directorio Debug.

Código en UserDefault.xml: hay una puntuación más alta en UserDefault.xml:

-

7000

Lea la puntuación más alta en UserDefault.xml

// Lee la puntuación más alta del juego, devuelve 0 cuando no se lee

int highScore = CCUserDefault :: sharedUserDefault () -> getIntegerForKey ("Puntaje alto", 0);

// Imprime la puntuación más alta

CCLog ("highScore =% d", highScore);

Resultados del:

 

                          Ejemplo de programa 2: utilice un archivo XML en formato plist para guardar la información del usuario y leer la información del usuario 1

Proceso de implementación:

Cree un nuevo archivo xml formateado como plist, el contenido del archivo es el siguiente

nombre

Zhang Sanfeng

años

36

Agregar código al programa

// Crea una clase de diccionario para leer archivos xml en formato plist

CCDictionary * dict = CCDictionary :: createWithContentsOfFile (“aaa.plist”);

// Leer la información del nombre de aaa.plist

const CCString * nombre = dict-> valueForKey ("nombre");

// Leer información sobre la edad de aaa.plist

const CCString * edad = dict-> valueForKey ("edad");

// Imprime estas dos informaciones

CCLog ("el nombre es% s, la edad es% d", nombre-> getCString (), edad-> intValue ());

Resultados del:

22

Ejemplo de programa 3: utilice el archivo xml en formato plist para guardar la información del usuario y leer la información del usuario 2

Proceso de implementación:

Cree un nuevo archivo xml formateado como plist, el contenido del archivo es el siguiente

nombre

Zhang Sanfeng

años

36

familia

hijo

nombre

xxx

años

6

hija

nombre

yyy

años

3

Agregue el siguiente código al programa:

// Crea una clase de diccionario para leer archivos xml en formato plist

CCDictionary * dict = CCDictionary :: createWithContentsOfFile (“aaa.plist”);

// Leer la información del nombre de aaa.plist

const CCString * nombre = dict-> valueForKey ("nombre");

// Leer información sobre la edad de aaa.plist

const CCString * edad = dict-> valueForKey ("edad");

// Imprime estas dos informaciones

CCLog ("el nombre es% s, la edad es% d", nombre-> getCString (), edad-> intValue ());

// Leer información familiar de aaa.plist

CCObject * oFamily = dict-> objectForKey ("familia");

CCDictionary * dictFamily = (CCDictionary *) oFamily;

// Encuentra la información de hijo en el diccionario

CCDictionary * dictSon = (CCDictionary *) dictFamily-> objectForKey ("hijo");

// Obtener el nombre del hijo

nombre = dictSon-> valueForKey ("nombre");

// Obtener la edad del hijo

edad = dictSon-> valueForKey ("edad");

// Imprime la información del hijo

CCLog (“el nombre del hijo es% s, la edad del hijo es% d”, nombre-> getCString (), edad-> intValue ());

// Encuentra la información de hija en el diccionario

CCDictionary * dictdaughter = (CCDictionary *) dictFamily-> objectForKey ("hija");

// Encuentra el nombre de la hija

nombre = dictdaughter-> valueForKey ("nombre");

// Encuentra la edad de la hija

edad = dictdaughter-> valueForKey ("edad");

// Imprime la información de la hija

CCLog (“el nombre de la hija es% s, la edad de la hija es% d”, nombre-> getCString (), edad-> intValue ());

Resultados del:

                     

Ejemplo de programa 4: creación de un analizador de archivos XML

Código de implementación:

#include "T40XML_tinyXML.h"

CCScene * T40XML_tinyXML :: escena ()

{

CCScene * s = CCScene :: crear ();

T40XML_tinyXML * capa = T40XML_tinyXML :: crear ();

s-> addChild (capa);

devoluciones;

}

void T40XML_tinyXML :: WalkOver (tinyxml2 :: XMLElement * nodo)

{

// Obtenga el primer nodo hijo debajo del nodo raíz

tinyxml2 :: XMLElement * curNode = nodo-> FirstChildElement ();

// Recorre los nodos en xml

while (curNode)

{

if (curNode-> FirstChild ())

{

CCLog (“el nodo es% s, el valor es% s”, curNode-> Value (), curNode-> FirstChild () -> Value ());

}

más

{

CCLog (“el nodo es% s, el valor es NULL”, curNode-> Value ());

}

WalkOver (curNode);

curNode = curNode-> NextSiblingElement ();

}

}

bool T40XML_tinyXML :: init ()

{

CCLayer :: init ();

// Crea un documento xml

tinyxml2 :: XMLDocument * doc = new tinyxml2 :: XMLDocument;

// Cargar documento xml

doc-> LoadFile (“aaa.plist”);

// Imprime todo el contenido en doc

tinyxml2 :: XMLElement * rootElement = doc-> RootElement ();

// Imprime el contenido en el nodo raíz en aaa.plist

CCLog (“el valor rootElemenet es% s”, rootElement-> Value ());

// Imprime la información de todos los nodos en aaa.plist

WalkOver (rootElement);

eliminar doc;

devuelve verdadero;

}

            

Supongo que te gusta

Origin blog.csdn.net/qq_21743659/article/details/108616198
Recomendado
Clasificación