Cocos2dx 小技巧(七) 静态数据

前端之家收集整理的这篇文章主要介绍了Cocos2dx 小技巧(七) 静态数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
貌似扯远了。赶紧回到正题!
-----------------------
这次讲下静态数据的使用。额,看到静态数据几个字是不是感觉很有技术性,什么static之类的。哈哈。
那么啥是静态数据呢?静态数据就是程序中的只读数据,例如我们游戏里有一些NPC,他们的名字、图片、人物介绍都是固定不变的,并不会再游戏过程中发生改变,例如你并不可能说在《富甲封神传》这款游戏里用哪吒打败了李靖就认为哪吒是李靖的老子吧?当然了,在游戏开发过程中这些NPC的属性数值可能经常变动,如哪吒的基础血量本来是100,后来觉得100太小,于是你决定给他改成101。为了便于修改,常规的做法就是将这些数据放到外部文件保存。
这里就选择用plist保存静态数据,然后用下面的方法读取plist数据:

  1. autodic=Dictionary::createWithContentsOfFile(std::string&pFileName);//读取到字典里,存于缓存中。
  2. //或者
  3. autoarray=Array::createWithContentsOfFile(std::string&pFileName);//读取与array数组中。
下面用一个小例子简单介绍下如何使用:
假如要做一款名为 《爱上喜羊羊的灰太狼》,NPC有俩,分别是喜羊羊与灰太狼,他们 在plist中的ID分别为10 和 20.如下:
  1. @H_502_85@<?xmlversion="1.0"encoding="UTF-8"@H_502_85@?>
  2. <!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"@H_502_85@>
  3. @H_502_85@<plistversion="1.0"@H_502_85@>
  4. @H_502_85@<array@H_502_85@>
  5. @H_502_85@<dict@H_502_85@>
  6. @H_502_85@<key@H_502_85@>id@H_502_85@</key@H_502_85@>
  7. @H_502_85@<string@H_502_85@>10@H_502_85@</string@H_502_85@>
  8. @H_502_85@<key@H_502_85@>name@H_502_85@</key@H_502_85@>
  9. @H_502_85@<string@H_502_85@>喜羊羊@H_502_85@</string@H_502_85@>
  10. @H_502_85@<key@H_502_85@>image@H_502_85@</key@H_502_85@>
  11. @H_502_85@<string@H_502_85@>xiyy.png@H_502_85@</string@H_502_85@>
  12. @H_502_85@<key@H_502_85@>info@H_502_85@</key@H_502_85@>
  13. @H_502_85@<string@H_502_85@>是一只羊,星座:白羊座,喜欢被灰太狼吃@H_502_85@</string@H_502_85@>
  14. @H_502_85@</dict@H_502_85@>
  15. @H_502_85@<dict@H_502_85@>
  16. @H_502_85@<key@H_502_85@>id@H_502_85@</key@H_502_85@>
  17. @H_502_85@<string@H_502_85@>20@H_502_85@</string@H_502_85@>
  18. @H_502_85@<key@H_502_85@>name@H_502_85@</key@H_502_85@>
  19. @H_502_85@<string@H_502_85@>灰太狼@H_502_85@</string@H_502_85@>
  20. @H_502_85@<key@H_502_85@>image@H_502_85@</key@H_502_85@>
  21. @H_502_85@<string@H_502_85@>huitl.png@H_502_85@</string@H_502_85@>
  22. @H_502_85@<key@H_502_85@>info@H_502_85@</key@H_502_85@>
  23. @H_502_85@<string@H_502_85@>来自北方的狼,星座:猎户座,喜欢吃喜羊羊@H_502_85@</string@H_502_85@>
  24. @H_502_85@</dict@H_502_85@>
  25. @H_502_85@</array@H_502_85@>
  26. @H_502_85@</plist@H_502_85@>
因为在plist中NPC数据是存在array中,所以这里我选择用Array来读取数据,过程如下:
  1. autom_array=Array::createWithContentsOfFile("info.plist");//读取plist数据,存于m_array数组中
  2. //遍历m_array数组,通过NPC的id找到想要的NPC信息
  3. for(inti=0;i<m_array->count();i++)
  4. {
  5. //从上面的plist内容可以看出,每个NPC的数据是以dic(字典)的方式存于array数组中
  6. autodic=static_cast<Dictionary*>(m_array->getObjectAtIndex(i));
  7. intid=(static_cast<String*>(dic->objForKey("id")))->intValue();//从字典中找到id对应的key值,并转化成int型
  8. //如果id=10,即这个是喜羊羊的id
  9. if(id==10)
  10. {
  11. std::stringname_str=(static_cast<String*>(dic->objForKey("name")))->getString();//读取喜羊羊的名字
  12. std::stringimage_str=(static_cast<String*>(dic->objForKey("image")))->getString();//读取喜羊羊图片
  13. std::stringinfo_str=(static_cast<String*>(dic->objForKey("info")))->getString();//读取喜羊羊的介绍
  14. ...
  15. //下面随便你去折腾
  16. }
  17. }

猜你在找的Cocos2d-x相关文章