CCDictionary文件读取
来源:互联网 发布:无人机软件处理系统 编辑:程序博客网 时间:2024/05/16 03:39
原文地址:http://blog.csdn.net/comeontom/article/details/7933692】
这些天被cocos2dx如何读取xml困惑着,现在总结总结,如有错误,欢迎指正!
先新建一个cocos2dx的工程
HelloWorldScene.cpp中的代码如下:
[cpp] view plaincopyprint?
- #include "HelloWorldScene.h"
- using namespace cocos2d;
- CCScene* HelloWorld::scene()
- {
- CCScene * scene = NULL;
- do
- {
- // 'scene' is an autorelease object
- scene = CCScene::create();
- CC_BREAK_IF(! scene);
- // 'layer' is an autorelease object
- HelloWorld *layer = HelloWorld::create();
- CC_BREAK_IF(! layer);
- // add layer as a child to scene
- scene->addChild(layer);
- } while (0);
- // return the scene
- return scene;
- }
- // on "init" you need to initialize your instance
- bool HelloWorld::init()
- {
- bool bRet = false;
- do
- {
- //////////////////////////////////////////////////////////////////////////
- // super init first
- //////////////////////////////////////////////////////////////////////////
- CC_BREAK_IF(! CCLayer::init());
- //////////////////////////////////////////////////////////////////////////
- // add your codes below...
- //////////////////////////////////////////////////////////////////////////
- // 1. Add a menu item with "X" image, which is clicked to quit the program.
- // Create a "close" menu item with close icon, it's an auto release object.
- CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
- "CloseNormal.png",
- "CloseSelected.png",
- this,
- menu_selector(HelloWorld::menuCloseCallback));
- CC_BREAK_IF(! pCloseItem);
- // Place the menu item bottom-right conner.
- pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));
- // Create a menu with the "close" menu item, it's an auto release object.
- CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
- pMenu->setPosition(CCPointZero);
- CC_BREAK_IF(! pMenu);
- // Add the menu to HelloWorld layer as a child layer.
- this->addChild(pMenu, 1);
- // 2. Add a label shows "Hello World".
- // Create a label and initialize with string "Hello World".
- //最外面的 CCDictionary
- CCDictionary* pDict = CCDictionary::createWithContentsOfFile("strings.xml");
- //第二层 CCDictionary
- CCDictionary* pDict_2 = new CCDictionary();
- pDict_2->retain();
- pDict_2 = (CCDictionary*)pDict->objectForKey("special");
- /*
- 如果在同一个key下面存在<string>hhhhh</string>
- <string>comeontom</string>
- <true></true>
- 这些关键词,则输出最后一个
- */
- CCLOG("pDict_2:%s",((CCString*)pDict_2->valueForKey("special_1"))->getCString());
- /*第三层 下面说的是Array中包含string
- <key>special_2</key>
- <array>
- <string>comeontom1</string>
- <string>comeontom2</string>
- <string>comeontom3</string>
- </array>
- */
- CCArray* pArray2 = new CCArray();
- pArray2->retain();
- pArray2 = (CCArray*)pDict_2->objectForKey("special_2");
- for (int i = 0;i < pArray2->count();i++)
- {
- CCLOG("pArray2%i:%s",i+1,((CCString*)pArray2->objectAtIndex(i))->getCString());
- }
- /*第三层 下面说的是Array中包含string
- <key>special_3</key>
- <array>
- <integer>45.0</integer>
- <integer>3</integer>
- <integer>43.444</integer>
- </array>
- */
- CCArray* pArray3 = new CCArray();
- pArray3->retain();
- pArray3 = (CCArray*)pDict_2->objectForKey("special_3");
- for (int i = 0;i < pArray3->count();i++)
- {
- CCLOG("pArray3%i:%s",i+1,((CCString*)pArray3->objectAtIndex(i))->getCString());
- }
- /*第三层
- <key>special_4</key>
- <real>多媒体</real>
- */
- CCLOG("pDict_2:%s",((CCString*)pDict_2->valueForKey("special_4"))->getCString());
- /*第三层
- <key>special_5</key>
- <false></false>
- */
- CCLOG("pDict_2:%s",((CCString*)pDict_2->valueForKey("special_5"))->getCString());
- CCLOG("strings.xmlCounts:%d",pDict->count());
- CCLOG("pDict:%s",pDict);
- CCArray* pArray = new CCArray();
- pArray = pDict->allKeys();//把所有的键值付给pArray
- for (int i = 0;i < pArray->count();i++)
- {
- CCLOG("pArray%i:%s",i+1,((CCString*)pArray->objectAtIndex(i))->getCString());
- }
- CCLabelTTF* pLabel = CCLabelTTF::create(((CCString*)pDict->objectForKey("chinese1"))->getCString(), "Arial", 24);
- /*CCLabelTTF* pLabel = CCLabelTTF::create(((CCString*)pArray->objectAtIndex(3))->getCString(), "Arial", 24);*/
- // CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
- CC_BREAK_IF(! pLabel);
- // Get window size and place the label upper.
- CCSize size = CCDirector::sharedDirector()->getWinSize();
- pLabel->setPosition(ccp(size.width / 2, size.height - 50));
- // Add the label to HelloWorld layer as a child layer.
- this->addChild(pLabel, 1);
- // 3. Add add a splash screen, show the cocos2d splash image.
- CCSprite* pSprite = CCSprite::create("HelloWorld.png");
- CC_BREAK_IF(! pSprite);
- // Place the sprite on the center of the screen
- pSprite->setPosition(ccp(size.width/2, size.height/2));
- // Add the sprite to HelloWorld layer as a child layer.
- this->addChild(pSprite, 0);
- bRet = true;
- } while (0);
- return bRet;
- }
- void HelloWorld::menuCloseCallback(CCObject* pSender)
- {
- // "close" menu item clicked
- CCDirector::sharedDirector()->end();
- }
strings.xml代码如下:
[html] view plaincopyprint?
- <?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">
- <dict>
- <key>special</key>
- <string>
- <dict>
- <key>special_1</key>
- <string>hhhhh</string>
- <string>comeontom</string>
- <true></true>
- <key>special_2</key>
- <array>
- <string>comeontom1</string>
- <string>comeontom2</string>
- <string>comeontom3</string>
- </array>
- <key>special_3</key>
- <array>
- <integer>45.0</integer>
- <integer>3</integer>
- <integer>43.444</integer>
- </array>
- <key>special_4</key>
- <real>多媒体</real>
- <key>special_5</key>
- <false></false>
- </dict>
- </string>
- <key>chinese1</key>
- <string>美好的一天</string>
- <key>japanese</key>
- <string>良い一日を</string>
- <key>spanish</key>
- <string>Buen día</string>
- </dict>
- </plist>
最后来个总结:
dict:建立字典
key:字典里面的关键词
integer:整形,其实和string、real的功能差不多,起配对作用
real:和integer、string的功能差不多,起配对作用
true:<true></true>如果这样写,输出的是1
false:<false></false> 输出的是0
string:和integer、real的功能差不多,起配对作用
array:建立数组
当然了,有兴趣看源码的同学,可以看这个文件:CCFileUtilsCommon_cpp.h(位置:cocos2dx\platform)
0 0
- CCDictionary文件读取
- CCDictionary文件读取
- CCDictionary
- CCDictionary
- CCDictionary
- cocos2d-x3.0 用CCDictionary写文件
- CCDictionary(转)
- CCDictionary详解
- CCDictionary 遍历
- 数据结构CCDictionary
- CCDictionary详解
- cocos2d CCDictionary
- CCDictionary 应用
- 7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml
- JSB CCDictionary CCDictionary to JSB CCDictionary绑定jsb plist file
- CCDictionary 解析xml总结
- CCDictionary 解析xml总结
- CCDictionary的基本使用方法
- yii中 集成PHPExcel 实现excel导入
- Java 序列化 格式
- 对oracle ITL(事务槽)的理解
- HTTP 1.1与HTTP 1.0的比较及状态代码含义
- 小米应用开发者文档(标注需要注意的地方)
- CCDictionary文件读取
- 【java performance】对于常量字符串,用'String' 代替'StringBuffer'
- 搞笑的银行简称
- Android上Fragment的简单使用
- TOJ 2102 An Excel-lent Problem 进制转换
- 某广电机房综合资源管理系统概要
- Linux常用命令大全
- getconf
- CF:394B - Very Beautiful Number(逆推)