青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

專職C++

不能停止的腳步

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用鏈接

留言簿(28)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

本文地址:http://m.shnenglu.com/zdhsoft/archive/2014/07/23/207760.html
使用cocostudio可以裝載編輯好的UI,但是過于復雜。特別是在加截UI后,發現觸屏事件有些問題。如果直接使用程序寫死加載UI又過于麻煩。花點時間,增加了一個基于ini的UI配置類,目前只實現了CCSprite和plist的加載。其它的可以后面慢慢加
頭文件
#ifndef _X_UI_H_
#define _X_UI_H_
#include <cocos2d.h>
namespace zdh
{
    USING_NS_CC;
    void CreateByXUI(CCNode * paramParent, const char * paramFileName);
}
#endif
源文件
#include "xui.h"
#include "xini.h"
#include "xlog.h"

namespace zdh
{
    namespace xui
    {
        //--------------------------------------------------------------------------------------
        int GetIntValue(XIniText::TSection * paramSection, const char * paramKeyName)
        {
            auto pV = paramSection->getEntry(paramKeyName);
            if (isNULL(pV)) return 0;
            else return pV->getValue().getField().ToIntDef(0);
        }
        //--------------------------------------------------------------------------------------
        int GetDoubleValue(XIniText::TSection * paramSection, const char * paramKeyName)
        {
            auto pV = paramSection->getEntry(paramKeyName);
            if (isNULL(pV)) return 0;
            else return pV->getValue().getField().ToIntDef(0);
        }
        //--------------------------------------------------------------------------------------
        const XAnsiString & GetStringValue(XIniText::TSection * paramSection, const char * paramKeyName)
        {
            static const XAnsiString strEmpty;
            auto pV = paramSection->getEntry(paramKeyName);
            if (isNULL(pV)) return strEmpty;
            else return pV->getValue().getField();
        }
    };

    //--------------------------------------------------------------------------------------
    void CreateSpriteByXUI(CCNode * paramParent, XIniText::TSection * paramSpriteSection)
    {
        XInt ix = xui::GetIntValue(paramSpriteSection, "x");
        XInt iy = xui::GetIntValue(paramSpriteSection, "y");
        XInt izOrder = xui::GetIntValue(paramSpriteSection, "zOrder");
        const XAnsiString & pImageName = xui::GetStringValue(paramSpriteSection, "image");
        XInt iTag = xui::GetIntValue(paramSpriteSection, "tag");
        CCSprite * pSprite = NULL;
        if (pImageName[0] == ':') //如果是從Cache中讀取
        {
            pSprite = CCSprite::createWithSpriteFrameName(pImageName.c_str()+1);
        }
        else
        {
            pSprite = CCSprite::create(pImageName.c_str());
        }
        pSprite->setPosition(ix, iy);
        pSprite->setAnchorPoint(0, 0);
        pSprite->setTag(iTag);
        pSprite->setZOrder(izOrder);
        paramParent->addChild(pSprite, izOrder);
    }
    
    void LoadSpriteFrameByPList(CCNode * /*paramParent*/, XIniText::TSection * paramSection)
    {
        const XAnsiString & pPListName = xui::GetStringValue(paramSection, "filename");
        CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(pPListName.c_str());
    }

    //--------------------------------------------------------------------------------------
    void CreateByXUI(CCNode * paramParent, const char * paramFileName)
    {
        std::string strFullFileName = CCFileUtils::sharedFileUtils()->fullPathForFilename(paramFileName);
        unsigned long dwGetSize = 0;
        const unsigned char * pData = CCFileUtils::sharedFileUtils()->getFileData(strFullFileName.c_str(), "rb", &dwGetSize);
        ZDH_INFO("Load XUI:%s size=%u", paramFileName, dwGetSize);
        if (dwGetSize == 0)
        {
            if (isNotNULL(pData)) delete[] pData;
            return;
        }

        std::string strData((const char *)pData, dwGetSize);
        std::stringstream ss(strData);
        XIniText stIni;
        if (!stIni.Load(ss))
        {
            ZDH_INFO("Load XUI Fail, %s", paramFileName);
            return;
        }
        for (int s = 0; s < stIni.getSectionCount(); s++)
        {
            auto pSection = stIni.getSection(s);
            auto pType = pSection->getEntry("type");
            if (isNULL(pType))
            {
                ZDH_INFO("Section=[%s] not exist key:\"type\"", pSection->getSectionName().c_str());
                continue;
            }
            const XAnsiString & paramTypeValue = pType->getValue().getField();
            if (paramTypeValue == "CCSprite")
            {
                CreateSpriteByXUI(paramParent, pSection);
            }
            else if (paramTypeValue == "plist")
            {
                LoadSpriteFrameByPList(paramParent, pSection);
            }
        }
    }
}
配置文件
#支持UTF-8格式
[gk_label.png]
type = CCSprite
image = gk_label.png
tag = 1
x = 18
y = 914
zOrder = 1

[mb_label.png]
type = CCSprite
image = :mb_label.png    ·#冒號開頭表示從CCSpriteFrameCache加載圖片
tag = 1
x = 348
y = 916
zOrder = 1

[score_label.png]
type = CCSprite
image = score_label.png
tag = 1
x = 258
y = 855
zOrder = 1

[game_star.plist]
#批量裝載
type = plist
filename = game_star.plist
相關用到的TTextIni和XAnsiString,參考我的開源代碼
posted on 2014-07-23 20:04 冬瓜 閱讀(2121) 評論(0)  編輯 收藏 引用 所屬分類: 原創cocos2dx
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费久久99精品国产自| 欧美日韩视频免费播放| 国产亚洲精品久久久| 欧美一区中文字幕| 欧美一级淫片aaaaaaa视频| 国产日韩欧美亚洲一区| 久久亚洲一区二区| 另类欧美日韩国产在线| 亚洲精品影院| 亚洲午夜极品| 国产丝袜一区二区三区| 欧美第一黄网免费网站| 欧美精品在线一区二区| 亚洲欧美日韩国产一区二区| 性欧美1819性猛交| 亚洲国产高清在线| 一本色道久久综合亚洲二区三区| 国产视频精品网| 欧美黄色免费| 国产精品啊啊啊| 麻豆国产精品va在线观看不卡| 免费不卡中文字幕视频| 亚洲欧美激情一区| 麻豆av一区二区三区久久| 亚洲特色特黄| 噜噜噜噜噜久久久久久91| 亚洲一区二区三区视频播放| 久久精品国产亚洲一区二区三区 | 毛片一区二区三区| 亚洲少妇诱惑| 久久综合久久综合久久综合| 亚洲一级特黄| 欧美激情第4页| 久久午夜av| 国产精品久久毛片a| 亚洲第一在线| 国产视频精品网| 亚洲免费电影在线观看| 在线观看国产欧美| 亚洲欧美美女| 亚洲午夜激情网站| 欧美激情第9页| 另类天堂av| 国产亚洲欧美激情| 亚洲小说春色综合另类电影| 91久久精品日日躁夜夜躁国产| 亚洲综合成人在线| 亚洲一区免费在线观看| 欧美电影打屁股sp| 免费成人激情视频| 狠色狠色综合久久| 午夜电影亚洲| 欧美一区二区成人6969| 欧美日韩在线一二三| 亚洲欧洲精品成人久久奇米网| 国内成人精品视频| 午夜精品久久| 亚洲欧美日韩国产中文在线| 欧美日韩在线精品| 日韩视频在线观看| 国产精品99久久久久久白浆小说| 免费久久99精品国产自在现线| 久久在线视频在线| 精品成人久久| 久久夜色精品国产噜噜av| 另类春色校园亚洲| 亚洲高清免费在线| 老色鬼精品视频在线观看播放| 老司机精品福利视频| 在线观看欧美日韩国产| 久久免费视频网| 欧美高清视频一区二区| 亚洲欧洲三级| 欧美日韩国产限制| 一区二区三区波多野结衣在线观看| 在线视频亚洲| 国产精品人人做人人爽人人添| 亚洲午夜一区二区| 久久久91精品国产| 在线观看国产一区二区| 欧美成人黑人xx视频免费观看| 亚洲国产精品美女| 亚洲午夜一区| 国产一区二区三区免费观看| 久久精品水蜜桃av综合天堂| 欧美顶级少妇做爰| 一区二区三区国产精华| 国产精品久久久久久久久免费 | 欧美粗暴jizz性欧美20| 亚洲精品免费在线播放| 欧美日韩亚洲天堂| 亚洲欧美一区二区视频| 免费观看不卡av| 一本久道综合久久精品| 国产精品美女久久久浪潮软件 | 欧美第一黄网免费网站| 亚洲午夜精品网| 黑人巨大精品欧美黑白配亚洲| 美女精品在线观看| 亚洲一区尤物| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩视频中文字幕| 国产欧美综合在线| 欧美精品黄色| 久久久精品2019中文字幕神马| 亚洲人久久久| 久久蜜桃资源一区二区老牛 | 亚洲精品欧美激情| 国产日韩精品在线观看| 欧美福利视频一区| 久久精品99国产精品| 亚洲免费av电影| 蜜臀va亚洲va欧美va天堂| 亚洲一区二区高清视频| 亚洲黑丝一区二区| 国产日韩亚洲欧美精品| 欧美乱人伦中文字幕在线| 久久精品免费| 亚洲欧美一区二区三区在线 | 久久亚洲私人国产精品va| 一区二区三区视频观看| 亚洲国产精品久久人人爱蜜臀| 国产精品草莓在线免费观看| 久久夜色精品国产亚洲aⅴ | 欧美本精品男人aⅴ天堂| 午夜精品www| 亚洲素人在线| 99在线|亚洲一区二区| 亚洲国产精品精华液网站| 国产欧美一区二区三区在线老狼| 欧美日韩综合一区| 欧美国产日韩xxxxx| 免费日韩一区二区| 快播亚洲色图| 久久免费视频一区| 久久人人爽人人| 久久超碰97人人做人人爱| 亚洲欧美日韩区| 亚洲综合精品自拍| 亚洲性视频h| 亚洲在线一区二区| 亚洲一区美女视频在线观看免费| 亚洲精品小视频在线观看| 亚洲精品久久久久久一区二区 | 久久久夜夜夜| 久久久水蜜桃av免费网站| 久久久999精品视频| 久久久国产精品一区二区三区| 欧美在线视频播放| 久久久国产精品一区| 久久久av水蜜桃| 久久综合九色99| 欧美1区2区| 亚洲黄网站在线观看| 亚洲精品视频在线播放| 日韩一级大片| 午夜精品久久久久久久久久久久| 亚洲欧美国产高清va在线播| 亚洲欧美日韩在线| 久久久久久噜噜噜久久久精品| 久久看片网站| 欧美激情免费观看| 国产精品国产三级国产aⅴ入口 | 欧美日韩一区综合| 国产精品日韩久久久| 黑丝一区二区| 日韩亚洲国产欧美| 性久久久久久久久| 欧美成人国产一区二区| 亚洲精品一区二区三区99| 亚洲淫性视频| 美女网站在线免费欧美精品| 欧美日韩精品福利| 国产揄拍国内精品对白| 亚洲欧洲精品天堂一级| 亚洲一区二区三区四区视频| 久久久精品一区二区三区| 欧美激情亚洲| 亚洲在线播放电影| 欧美xxx在线观看| 国产精品av一区二区| 狠狠色2019综合网| 亚洲午夜精品久久久久久浪潮| 久久久久国色av免费看影院 | 性欧美videos另类喷潮| 免费观看成人鲁鲁鲁鲁鲁视频| 一本色道久久加勒比88综合| 久久久91精品国产一区二区精品| 欧美日韩免费在线观看| 一区二区三区在线观看国产| 亚洲午夜久久久久久尤物 | 久久久久成人精品| 一本色道精品久久一区二区三区| 久久精品国产精品亚洲精品| 欧美日韩亚洲一区二区| 亚洲国产精品成人精品| 久久成人精品一区二区三区| 99xxxx成人网| 欧美成人激情视频| 在线播放中文一区|