Colección de citas famosas - Slogan de motivación - ¿Cómo leen archivos cocos2dx CCFileUtils o CCDictionary?

¿Cómo leen archivos cocos2dx CCFileUtils o CCDictionary?

En cocos2d-x puedes. formato plist, que es uno de los formatos de archivos XML. Hay poca información sobre el análisis de cocos2d-x. plist, pero también muy simple. para analizar. plist, puede consultar la clase CCSpriteFrameCache y la clase CCParticleSystem en la biblioteca de clases cocos2d-x, que se operan principalmente con la clase CCDictionary. archivo plist.

El siguiente es un archivo .plist:

& lt? xml versión="1.0 "codificación="UTF-8"? & gt

& ltplist version="1.0 " >>p>

& ltdict & gt

& ltkey & gtlevel 1 & lt;/key & gt;

& ltdict & gt

& ltkey & gtbg _Far_view& lt/key & gt;

& ltdict & gt

& ltkey>path</key>

& ltstring>images/far_scene.png</string>

& ltkey>pos& lt/key>

& ltstring>{358, 309} & lt/string>

& lt/dict>

& ltkey & gtbg _ cerca de escena & lt/key & gt;

& ltdict & gt

& ltkey & gtpath</key & gt;

& ltstring& gtimages/near_scene .png & lt;/string & gt;

& ltkey & gtpos & lt/key & gt;

& ltstring>{360, 100}</string>

</dict>

</dict>

</ dict>

</plist>

El código leído.

El archivo plist es el siguiente:

const char * testPlistPath = " BSPlistDatas \ \ test . plist ";

const char * full path = ccfile utils::shared file utils() -& gt ; ruta completa del archivo relativo(" prueba . plist ", testPlistPath

CCDictionary * plist DIC = CCDictionary::createwithcontentsofile(testPlistPath);

CCDictionary * nivel DIC); dinámico _ cast <CCDictionary *>(plist DIC->objectForKey(" nivel 1 ");

CCDictionary * escena lejana =dynamic_cast <CCDictionary *>(nivel DIC->; objectForKey(" BG _ far _ scene ");

cc string * farScenePath = dinámico _ cast & lt; CCString * & gt(farScene-& gt; objectForKey(" ruta "));

punto cc punto = CCPointFromString(escena lejana-& gt; valueForKey(" pos ")-& gt; getCString());

CCLog("ruta = %s ", farScenePath-& gt;getCString( ));

CCLog("pos = %f, %f ", point.x, point. y);

La primera línea es la ruta relativa después del archivo plist. para obtener la ruta absoluta en el archivo a través de la clase CCFileUtils, use ccdictionary::create sin archivo de contenido (ruta del archivo, cargue el contenido del archivo en la memoria de la estructura de datos CCDictionary y luego obtenga el valor bajo la clave correspondiente); xxxForKey

Lo que hay que tener en cuenta aquí es que cuando se lee 'pos', su valor es una cadena {x, y}, que es la regla de almacenamiento de la matriz en . archivo plist. Podemos convertir dicha cadena en un objeto CCpoint a través de la función API proporcionada por Cocos2d-X.

cc point point = CCPointFromString(far scene-& gt; valueForKey(" pos ")-& gt; getCString());

La oración anterior es un proceso de conversión de este tipo. el mismo cocos2d-x también admite la conversión de cadenas de CCSize y CCRect. Sus métodos de conversión y. El plan es el siguiente:

punto cc:CCPointFromString(); {x, y}

CCSize: CCSizeFromString(); cc rect: CCSizeFromString(); {x, y, w, h}

De esta manera, todos los datos necesarios para inicializar el juego 2D son básicamente suficientes. Podemos intentar poner en él los datos iniciales del juego. plist, y luego modifique el valor de ajuste para modificar el archivo plist directamente sin volver a compilar el programa, logrando la separación de los datos del juego y la lógica del juego.