欢迎使用CSDN-markdown编辑器

HelloWorld.cpp

#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:
```xml
<?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:如果这样写,输出的是1
false: 输出的是0
string:和integer、real的功能差不多,起配对作用
array:建立数组

当然了,有兴趣看源码的同学,可以看这个文件:CCFileUtilsCommon_cpp.h(位置:cocos2dx\platform)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值