¿Cómo leen archivos cocos2dx CCFileUtils o CCDictionary?
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; p>
& 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.