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

專職C++

不能停止的腳步

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

常用鏈接

留言簿(28)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

本文地址:http://www.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 冬瓜 閱讀(2112) 評論(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精品99久久久久久宅男| 欧美午夜不卡视频| 欧美一区二区国产| 久久久精品国产免大香伊| 最新国产拍偷乱拍精品| 亚洲欧洲日韩综合二区| 亚洲免费影视第一页| 亚洲男人的天堂在线观看| 午夜精品一区二区三区在线播放| 亚洲午夜激情网站| 狠狠久久综合婷婷不卡| 欧美国产精品va在线观看| 欧美大色视频| 午夜视频在线观看一区二区三区 | 欧美激情一区二区在线 | 久久久91精品国产一区二区三区| 久久久久国产免费免费| 一本色道久久99精品综合| 亚洲欧美激情在线视频| 亚洲激情av在线| 亚洲综合色噜噜狠狠| 亚洲黄色免费电影| 亚洲男人天堂2024| 日韩一级黄色大片| 欧美一区日本一区韩国一区| 亚洲国产专区校园欧美| 午夜电影亚洲| 一区二区三区偷拍| 久久夜色精品一区| 午夜精品影院| 欧美欧美午夜aⅴ在线观看| 久久久91精品| 国产精品午夜电影| 亚洲精品视频在线观看网站 | 国产女人水真多18毛片18精品视频| 欧美福利视频网站| 国产亚洲欧美日韩精品| 亚洲深夜福利| 中文在线一区| 欧美电影免费观看| 男男成人高潮片免费网站| 国产精品人人做人人爽| 日韩视频精品| 亚洲精品一区二区三区樱花| 久久手机免费观看| 久久这里只有| 黄色精品一二区| 亚洲欧美日韩中文视频| 亚洲尤物影院| 国产精品大片| 在线视频你懂得一区| 亚洲视频狠狠| 欧美三级精品| 在线视频欧美一区| 亚洲欧美日韩综合| 国产精品亚洲综合| 亚洲免费一区二区| 欧美一区91| 国产一区999| 久久黄色级2电影| 久久影音先锋| 亚洲国产成人一区| 欧美激情第4页| 在线观看日韩av先锋影音电影院| 久久精品视频导航| 欧美成人激情视频| 亚洲精品在线看| 欧美日韩国产综合一区二区| 日韩一级精品视频在线观看| 亚洲免费视频观看| 国产美女一区二区| 久久国产精品亚洲va麻豆| 免费亚洲一区| 亚洲美女黄色片| 欧美视频精品在线| 午夜精品久久| 麻豆av福利av久久av| 亚洲精品国产无天堂网2021| 欧美日韩国产一区| 亚洲欧美日韩综合一区| 鲁大师影院一区二区三区| 亚洲日本免费| 国产精品久久久一区二区| 久久成人综合网| 亚洲国产一区二区三区青草影视| 99视频精品全国免费| 国产精品尤物福利片在线观看| 久久精品视频在线免费观看| 亚洲国产精品一区二区第四页av| 亚洲免费影院| 亚洲国产精品电影| 国产精品第三页| 欧美一级成年大片在线观看| 亚洲电影成人| 久久精品视频99| 亚洲免费av观看| 国产一区二区三区电影在线观看| 欧美高清不卡| 欧美一级片在线播放| 亚洲区第一页| 玖玖精品视频| 午夜精品久久久久久99热软件 | 国产精品免费观看在线| 久久久亚洲成人| 亚洲小视频在线观看| 欧美激情一区二区在线 | 欧美高清视频| 久久av在线看| 中文国产一区| 亚洲精品一区二区三区蜜桃久| 国产日产欧产精品推荐色| 欧美激情一区二区三区全黄| 久久久久久久久久码影片| 亚洲一级影院| 一本一本久久| 亚洲精品久久在线| 欧美福利视频在线观看| 久久久免费av| 久久国产乱子精品免费女| 亚洲一区二区三区四区五区黄| 亚洲高清不卡| 伊人久久婷婷色综合98网| 国产欧美日本| 国产精品视频一区二区三区 | 欧美精品免费在线观看| 久久免费精品视频| 久久久久久久久岛国免费| 亚洲欧美三级伦理| 亚洲欧美日韩一区| 亚洲自拍电影| 亚洲欧美日韩综合aⅴ视频| 欧美一区观看| 欧美一二区视频| 午夜精彩视频在线观看不卡 | 一区二区在线看| 国产亚洲视频在线| 国产一区91精品张津瑜| 国产亚洲欧美色| 极品日韩久久| 亚洲大胆美女视频| 亚洲欧洲精品一区二区精品久久久| 一区二区三区在线观看国产| 在线观看欧美精品| 亚洲人成网站在线播| 亚洲日韩视频| 亚洲一区二区视频| 午夜久久黄色| 久久精品最新地址| 欧美成ee人免费视频| 欧美激情网友自拍| 日韩一级黄色大片| 亚洲免费视频网站| 久久在线免费视频| 欧美激情在线观看| 国产精品免费电影| 极品中文字幕一区| 99国产精品| 小黄鸭精品aⅴ导航网站入口| 久久国产精品一区二区| 欧美va日韩va| 在线亚洲电影| 久久久成人网| 欧美日韩福利| 国产视频一区在线观看一区免费| 黄色成人av在线| 中文高清一区| 麻豆国产精品777777在线| 亚洲欧洲精品一区二区三区| 亚洲自拍偷拍福利| 免费亚洲婷婷| 国产精品系列在线播放| 亚洲福利在线看| 亚洲专区欧美专区| 久久视频这里只有精品| 亚洲理论在线观看| 久久久免费观看视频| 欧美日韩小视频| 在线精品在线| 欧美亚洲综合另类| 亚洲日本免费| 久久久久久精| 国产精品久久一区二区三区| 亚洲国产综合在线| 欧美专区在线| 99天天综合性| 美国十次了思思久久精品导航| 国产精品你懂的在线| 亚洲人体偷拍| 麻豆成人在线播放| 午夜精品理论片| 欧美视频一区| 99精品99| 亚洲第一精品夜夜躁人人爽| 欧美一区二视频在线免费观看| 国产精品美女久久久久久2018| 99视频热这里只有精品免费|