自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Cocostudio試用手記:數(shù)據(jù)編輯器和UI編輯器

原創(chuàng)
移動(dòng)開(kāi)發(fā) Android 游戲開(kāi)發(fā)
Cocostudio工具集的發(fā)布,進(jìn)一步幫助游戲開(kāi)發(fā)者減少了開(kāi)發(fā)周期、提高了開(kāi)發(fā)效率。作為一個(gè)Cocos2dx的游戲開(kāi)發(fā)者,無(wú)論你是策劃、程序還是設(shè)計(jì)人員都應(yīng)該在一定程度去了解或掌握它。那么作為游戲開(kāi)發(fā)者,Cocostudio到底用起來(lái)怎么樣呢?筆者選擇了數(shù)據(jù)編輯器和UI編輯器來(lái)試用一番,談?wù)勛约旱捏w會(huì)。

背景介紹

Cocostudio是觸控科技公司在2013年CocoaChina開(kāi)發(fā)者大會(huì)中發(fā)布的編輯器工具集。其中包括數(shù)據(jù)編輯器、界面編輯器、動(dòng)畫(huà)編輯器和場(chǎng)景編輯器四種工具??梢哉f(shuō)這一工具集的發(fā)布,進(jìn)一步幫助游戲開(kāi)發(fā)者減少了開(kāi)發(fā)周期、提高了開(kāi)發(fā)效率。

作為一個(gè)Cocos2dx的游戲開(kāi)發(fā)者,無(wú)論你是策劃、程序還是設(shè)計(jì)人員都應(yīng)該在一定程度去了解或掌握它。

安裝

讀者可以在http://cocostudio.org/下載最新的Cocostudio安裝包,作者在完成本文的時(shí)候Cocostudio已更新至0.1.5版本。(安裝過(guò)程略)

使用說(shuō)明

作為基礎(chǔ)篇,本中主要介紹上面提到的前兩種工具的使用——數(shù)據(jù)編輯器和UI編輯器。

如上圖所示,藍(lán)色圈中區(qū)域和紅色圈中區(qū)域就是我今天和大家分享的兩個(gè)編輯器使用體驗(yàn)。

數(shù)據(jù)編輯器

Cocostudio提供的數(shù)據(jù)編輯器現(xiàn)在的功能主要是在可視化窗口中對(duì)特定格式(Excel)進(jìn)行數(shù)據(jù)編輯,然后將編輯好的數(shù)據(jù)導(dǎo)出為我們期望的數(shù)據(jù)格式(Json)以方便游戲中的使用。

選擇Data Editor,我們首先進(jìn)入數(shù)據(jù)編輯器中開(kāi)始學(xué)習(xí)。

如下圖,是我們的原始數(shù)據(jù)

我們將該數(shù)據(jù)表導(dǎo)入到數(shù)據(jù)編輯器中,如下圖所示

如上圖所示,左上角的紅色框區(qū)域表示我們打開(kāi)的原始數(shù)據(jù)表名稱,中間紅色區(qū)域表示Excel每個(gè)Sheet中數(shù)據(jù)項(xiàng),而最右側(cè)的紅色區(qū)域則是用來(lái)顯示我們?cè)诘诙t色區(qū)域選中數(shù)據(jù)項(xiàng)的具體數(shù)據(jù)。

好的,導(dǎo)入數(shù)據(jù)是第一步,接下來(lái)我們就可以在選定數(shù)據(jù)項(xiàng)區(qū)域去查看或者編輯我們的數(shù)據(jù)了。

或許有人會(huì)說(shuō),這些查看和編輯工作我完全可以在Excel表格中完成,為什么非要使用這個(gè)編輯器呢?客觀來(lái)說(shuō),這個(gè)編輯器還不夠完善,個(gè)人認(rèn)為比較好的一個(gè)功能是數(shù)據(jù)格式轉(zhuǎn)換——數(shù)據(jù)編輯器支持將當(dāng)前數(shù)據(jù)保存成我們期望的Json格式(具體的話,可以按照需要保存成屬性方式的Json文件或者對(duì)象方式的Json文件,后面會(huì)有詳細(xì)說(shuō)明)。

選擇“文件”下來(lái)列表中選擇“導(dǎo)出Json文件”選項(xiàng),可以在如下圖的對(duì)話框中選擇我們的需要的格式進(jìn)行導(dǎo)出。

為了明確前面提到的“屬性方式的Json文件”和“對(duì)象方式的Json文件”這兩個(gè)概念,我們將之前導(dǎo)入的文件分別進(jìn)行這兩種方式的保存,并做下面圖示的對(duì)比。

仔細(xì)觀察圖6和圖7中的數(shù)據(jù),我們會(huì)發(fā)現(xiàn)他們的差異之處,即——屬性方式的Json是每一項(xiàng)都是ID和Name的鍵值對(duì),整體是一個(gè)數(shù)組,數(shù)組中的每一項(xiàng)格式都是一致的;而對(duì)象方式的Json則是和原始數(shù)據(jù)存儲(chǔ)方式類似,都是首元素表示這一數(shù)據(jù)表中的表頭,剩下的元素才是真正的數(shù)據(jù)項(xiàng)。相信通過(guò)這兩個(gè)文件對(duì)比,讀者已經(jīng)可以完全理解他們的區(qū)別。

當(dāng)然這兩種格式的存儲(chǔ)并無(wú)優(yōu)劣之差,需要按照我們的需要去是當(dāng)選擇即可。

OK,有了我們保存好的數(shù)據(jù),最后我們就需要在程序中去加載使用它了,有關(guān)Json數(shù)據(jù)的加載并不是Cocostudio工具集的主要內(nèi)容,有需要的讀者可以去網(wǎng)上搜索相關(guān)資料,這一部分內(nèi)容網(wǎng)上資源還是比較豐富的,這里我們只做簡(jiǎn)單說(shuō)明。

  1. std::string tFullPath = cocos2d::CCFileUtils::sharedFileUtils()->fullPathForFilename(tFullName.c_str()); 
  2.  
  3. pBuffer = (char*)(cocos2d::CCFileUtils::sharedFileUtils()->getFileData(tFullPath.c_str(),"r" , &outLength)); 

首先將整個(gè)Json文件加載進(jìn)來(lái),然后按照自定義的關(guān)鍵字去逐一解析即可,如下。

  1. bool parseRet = reader.parse(pBuffer,jsValue,false); 
  2.  
  3. tDictionaryData->mID = jsValue[i]["ID"].asInt64(); 

運(yùn)行程序,我們可以看到數(shù)據(jù)已經(jīng)正常被解析加載了。(下圖是筆者項(xiàng)目中對(duì)數(shù)據(jù)編輯器解析的截圖,運(yùn)行結(jié)果無(wú)誤)

數(shù)據(jù)編輯器就當(dāng)前版本來(lái)說(shuō)做的還是比較簡(jiǎn)單的。也許有人可能會(huì)說(shuō),這么簡(jiǎn)單的功能,我使用一個(gè)通用讀表器不是更簡(jiǎn)便嗎?但是筆者認(rèn)為,使用數(shù)據(jù)編輯器更重 要的意義不是我們上面提到的數(shù)據(jù)的保存和轉(zhuǎn)換,而是它作為正式發(fā)布的工具集之一,是有專門(mén)的團(tuán)隊(duì)在維護(hù),另一方面我們也相信,后續(xù)版本會(huì)有更多更好的功能 不斷增加進(jìn)來(lái)。

#p#

UI界面編輯器

接下來(lái)我們進(jìn)行界面編輯器的學(xué)習(xí),如圖1中選擇藍(lán)色圈區(qū)域進(jìn)入界面編輯器。和第一部分一樣,首先我們對(duì)界面編輯器整體做一個(gè)認(rèn)識(shí),見(jiàn)下圖。

紅色區(qū)域是我們可以添加的控件工具欄區(qū)域;

藍(lán)色區(qū)域是我們編輯過(guò)程中使用的主區(qū)域,即所有主要的操作結(jié)果都是在這個(gè)區(qū)域中完成的;

黃色區(qū)域是我們編輯之后物理層級(jí)結(jié)構(gòu)展示區(qū)域;

綠色區(qū)域是我們?cè)诰庉嬤^(guò)程中選中控件的屬性顯示區(qū)域;

藍(lán)綠色(右上角)區(qū)域是我們這個(gè)UI使用的所有資源展示區(qū)域;

紫紅色(右下角)區(qū)域是上邊某一資源圖片被選中時(shí)候的預(yù)覽圖顯示區(qū)域。

有了對(duì)編輯器整體上的認(rèn)識(shí)之后,我們就可以使用它了。如果沒(méi)有意境編輯好的UI文件供我們加載,那么我們首先需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目,如下圖。

在彈出的對(duì)話框中,我們可以根據(jù)需要選擇項(xiàng)目名稱和項(xiàng)目存儲(chǔ)路徑。

這時(shí)我們會(huì)在編輯使用的主區(qū)域出現(xiàn)一個(gè)用黑框表示的編輯區(qū)域如下圖。

這個(gè)黑色編輯區(qū)域大小是與我們期待的分辨率一致的,那么肯定有人會(huì)問(wèn)——編輯器怎么會(huì)知道我們期望的分辨率是多大呢,如果這個(gè)分辨率與我們期望的分辨率大小不一致怎么辦呢?

大家注意看編輯器左上角有一個(gè)文本標(biāo)志“畫(huà)布”后面跟隨一個(gè)下拉列表框選項(xiàng),我們可以通過(guò)這里來(lái)告知或修改我們正在編輯UI的分辨率大小。

設(shè)計(jì)者為我們提供了多種分辨率(包括:480X320、960X640、1024X768以及以上幾種分辨率的豎屏結(jié)構(gòu)),隨著我們選擇的不同,前面提到的黑色編輯區(qū)域也隨之變化。特別需要提到的,在下拉列表最下方,為我們提供了自定義設(shè)置,大大方便了我們對(duì)不同分辨率的需求。

這個(gè)時(shí)候我們相當(dāng)于有了自己一張畫(huà)布,不過(guò)僅有畫(huà)布還是不夠的,我們還需要畫(huà)筆。圖15中是我們的控件編輯欄,其中依次包括文本按鈕、輸入框、文本區(qū)、數(shù)字標(biāo)簽、滑動(dòng)條、按鈕、進(jìn)度條、曾容器、圖片、復(fù)選框、文本框、滾動(dòng)條等,相信后續(xù)還會(huì)有新的控件會(huì)被加入進(jìn)來(lái)。

選中上面圖中的黑色畫(huà)布,開(kāi)始添加控件。

如上圖中方式,我們可以通過(guò)現(xiàn)有控件拼接出自己需要UI布局來(lái)。如下圖就是筆者創(chuàng)建的一個(gè)UI布局。

 

這些控件具有一定的層級(jí)關(guān)系,我們可以在前面提到的對(duì)象結(jié)構(gòu)這個(gè)View中看到,如下圖所示。

OK,保存項(xiàng)目,并打開(kāi)之前設(shè)定的路徑,我們看到如下圖的結(jié)果。

這里需要說(shuō)明的是,xml文件表示的是我們這個(gè)UI工程相關(guān)的信息,如上圖,這個(gè)xml文件中保存了包括項(xiàng)目名稱、UI布局結(jié)構(gòu)文件、使用資源的路徑、以及工程使用的分辨率等等信息。

最后,根據(jù)xml文件中的記錄,我們打開(kāi)Resource目錄、如下圖所示。

至此,我們的UI界面編輯工作就完成了。那么有了這個(gè)UI布局文件之后,我們應(yīng)該在程序中如何使用它呢?難道我們要自己去實(shí)現(xiàn)解析、UI層級(jí)管理、事件響應(yīng)?當(dāng)然不是,我們Cocostudio開(kāi)發(fā)者已經(jīng)為我們提供了上述問(wèn)題的解答方案——在Cocostudio官網(wǎng)上,可以找到對(duì)應(yīng)解析器的代碼(CocoGUILIB.zip)。

首先我們創(chuàng)建一個(gè)新的工程——UIEditorDemo,將CocoGUILIB中有關(guān)UI解析相關(guān)的代碼導(dǎo)入我們上面創(chuàng)建的UIEditorDemo工程中(并按照編譯報(bào)告添加對(duì)應(yīng)的頭文件路徑即可)。在程序需要解析加載UI的地方,添上如下代碼。

  1. COCOUISYSTEM->resetSystem(scene); 
  2.  
  3. COCOUISYSTEM->replaceUISceneWithFile(this"NewProject.json", 1, truetruetrue); 

下面就是見(jiàn)證奇跡的時(shí)刻——

運(yùn)行程序,我們看到如上圖的運(yùn)行結(jié)果,這不就是我們前面編輯的UI界面嗎。不錯(cuò),加載就是這么簡(jiǎn)單。

界面編輯器為開(kāi)發(fā)者也提供了很大的方便,首先,工具集將界面的編輯工作可視化,從一定程度上也可以說(shuō)做到了“所見(jiàn)即所得”。這使得編輯界面從抽象化到具體化,也將這一編輯工作簡(jiǎn)單化,可以由非程序人員來(lái)完成界面的編輯工作,大大提高了開(kāi)發(fā)效率。

其次,就如上面提到的一樣,界面的加載也十分簡(jiǎn)單。比較重要的一點(diǎn)是,編輯出來(lái)界面的層級(jí)關(guān)系與點(diǎn)擊響應(yīng)的層級(jí)關(guān)系一般來(lái)說(shuō)是一致的,也就是說(shuō),我 們?cè)诰庉嫿缑娴臅r(shí)候添加的兩個(gè)界面在物理層級(jí)上如果存在父子關(guān)系,那么它們的點(diǎn)擊事件在邏輯傳遞的過(guò)程中總是誰(shuí)在最上面誰(shuí)就先獲取到這個(gè)事件。這就更方便 了我們的理解和操作。這樣,從很大程度上來(lái)說(shuō)降低了我們開(kāi)發(fā)的難度。

最后,界面編輯器的使用使得界面的布局和功能開(kāi)發(fā)上獨(dú)立開(kāi)來(lái),凡是有游戲開(kāi)發(fā)經(jīng)驗(yàn)的人應(yīng)該能夠明白這一點(diǎn)給工作帶來(lái)的好處——當(dāng)界面布局的某些屬性 (比如某個(gè)控件的坐標(biāo)等)改變時(shí),只要不修改控件的名字,我們并不需要修改代碼并且重新編譯程序,直接更新界面資源即可。這就在一定程度上降低了界面相關(guān) 代碼返工的可能,縮短了開(kāi)發(fā)周期。

總結(jié)

總體來(lái)說(shuō),Cocostudio工具集的確為游戲開(kāi)發(fā)者提供了很大的方便,其中的一些原因上面也講到了,不過(guò),CocoStudio目前還并不完善,在使用過(guò)程中出現(xiàn)過(guò)一些Bug,這些是亟待解決的問(wèn)題。不過(guò)官方更新的速度也很快,對(duì)于用戶反饋的反應(yīng)也很及時(shí),可見(jiàn)官方對(duì)這款工具集也傾注了很多的心血,它的未來(lái)值得期待,在此之前,我們對(duì)這款工具也要好好熟悉并且善加利用。

責(zé)任編輯:徐川 來(lái)源: 51CTO
相關(guān)推薦

2013-06-18 00:45:23

CocoStudio工Cocos2d-x

2011-01-10 16:17:49

2010-03-24 09:20:07

CentOS vi編輯

2013-06-18 00:58:54

CocoStudio工Cocos2d-x

2011-03-22 13:54:57

UbuntuPHP編輯器

2018-09-25 09:25:11

Vim編輯器命令

2009-12-04 17:07:49

SlickEdit

2022-05-31 14:46:02

Ruby編碼線上編輯器

2020-10-14 14:00:39

VIM編輯器

2013-06-03 16:45:54

手游開(kāi)發(fā)CocoStudio下工具

2023-02-06 16:59:57

Canvas編輯器

2018-05-11 14:59:21

LinuxVim編輯器

2014-06-18 10:53:44

BootstrapBootstrap U

2025-02-05 12:01:35

屬性編輯器Web

2019-06-10 11:06:04

JavaScript編輯器HTML5

2009-11-26 17:37:37

Linux編輯器

2020-12-23 22:25:11

Vi文本編輯器Unix

2022-12-02 07:24:46

2020-09-27 08:43:33

MuPythonturtle 模塊

2009-12-14 15:56:40

網(wǎng)頁(yè)編輯器Bluefi
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)