Cocos2dx 小技巧(七) 静态数据

来源:互联网 发布:linux beego 安装 编辑:程序博客网 时间:2024/04/30 10:24

中午在当当网买的两本书到了,一本是《百年孤独》,用来看的;还有一本是《诛仙2》,用来收藏的。

我的桌上叠着两堆厚厚的书,一大半都是非技术类的书,为什么呢?因为技术书贵啊!(开玩笑的)。读书是件很有意义的事,也是我从小的乐趣所在,毕竟生活如此的丰富美好。每天睡前几乎都会翻几页书,偶尔也会看看技术类的书,当然了这是少数情况。在我看来,程序员如果在工作外的时间都还钻在代码的世界里不能自己拔自己,那可能永远也只是一个程序员了。

前辈说:程序员的形象就是邋遢,人字拖+沙滩裤,于是你就这么穿了;前辈说:程序员很难找到女朋友,也许你的爱情观就发生了改变,一有空就对着苍老师来上一发;前辈说,程序员不是程序员,而是程序猿,于是你也认同了这个说法,并以这个称号而沾沾自喜。
其实随时都要认为自己的职业是高尚的,脱离了低级趣味的。偶尔应该告别自己的右手,尝试着穿一次正装,西装皮鞋上身,自信油然而生。
穿什么就是什么,森马休闲服。


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

auto dic = Dictionary::createWithContentsOfFile(std::string& pFileName);//读取到字典里,存于缓存中。//或者auto array = Array::createWithContentsOfFile(std::string& pFileName);//读取与array数组中。
下面用一个小例子简单介绍下如何使用:
假如要做一款名为《爱上喜羊羊的灰太狼》,NPC有俩,分别是喜羊羊与灰太狼,他们在plist中的ID分别为10 和 20.如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array><dict><key>id</key><string>10</string><key>name</key><string>喜羊羊</string><key>image</key><string>xiyy.png</string><key>info</key><string>是一只羊,星座:白羊座,喜欢被灰太狼吃</string></dict><dict><key>id</key><string>20</string><key>name</key><string>灰太狼</string><key>image</key><string>huitl.png</string><key>info</key><string>来自北方的狼,星座:猎户座,喜欢吃喜羊羊</string></dict></array></plist>
因为在plist中NPC数据是存在array中,所以这里我选择用Array来读取数据,过程如下:
auto m_array = Array::createWithContentsOfFile("info.plist");//读取plist数据,存于m_array数组中//遍历m_array数组,通过NPC的id找到想要的NPC信息for(int i=0;i<m_array->count();i++){//从上面的plist内容可以看出,每个NPC的数据是以dic(字典)的方式存于array数组中auto dic = static_cast<Dictionary*>(m_array->getObjectAtIndex(i));int id = (static_cast<String*>(dic->objForKey("id")))->intValue();//从字典中找到id对应的key值,并转化成int型//如果id = 10,即这个是喜羊羊的idif(id == 10){std::string name_str = (static_cast<String*>(dic->objForKey("name")))->getString();//读取喜羊羊的名字std::string image_str = (static_cast<String*>(dic->objForKey("image")))->getString();//读取喜羊羊图片名std::string info_str = (static_cast<String*>(dic->objForKey("info")))->getString();//读取喜羊羊的介绍...//下面随便你去折腾}}


嘿嘿。结束了。

很短,但可以旋转。


尊重原创,转载请注明来源:http://blog.csdn.net/start530/article/details/23301233

2 1
原创粉丝点击