從前面看到,不但視窗和顯示板可以通過
xml定製,而選單也可以通過xml檔案來定製的,那麼選單的定製又是怎樣讀取xml檔案的呢?到底它又會產生什麼樣的物件來執行選單呢?下面就來解決這兩個問題,**如下:
#001llmenugl *lluictrlfactory::buildmenu(const llstring &filename, llview* parentp)
#002
#011
判斷這個
xml檔案是否定義選單的。
#012
// root must be called panel
#013
if( !root->hasname( "menu_bar" ) && !root->hasname( "menu" ))
#014
#018
如果 xml檔案裡定義有menu,說明它是類llmenugl裡創制選單,否則它是從類llmenubargl裡建立選單。
#019
if (root->hasname("menu"))
#020
#023
else
#024
#027
設定選單類提示的資訊是
xml檔名稱。
#028
if (llui::sshowxuinames)
#029
#032
#033
return menu;
#034}
#035
上面的**通過分析
xml檔案,然後根據xml檔案來建立llmenugl物件來表示選單,因此這裡是使用類llmenugl來執行顯示選單的。下面再來看一下選單定義的xml是什麼樣子的,如下:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
height="18" left="0" mouse_opaque="true" name="login menu" opaque="true"
tear_off="false" width="802">
height="263" label="file" left="0" mouse_opaque="false" name="file"
opaque="true" tear_off="false" width="243">
mouse_opaque="true" name="quit" shortcut="control|q" width="243">
height="439" label="edit" left="38" mouse_opaque="false" name="edit"
opaque="true" tear_off="false" width="153">
mouse_opaque="true" name="preferences..." shortcut="control|p" width="153">
height="317" label="help" left="80" mouse_opaque="false" name="help"
opaque="true" tear_off="falsoe" width="166">
mouse_opaque="true" name="second life help" shortcut="f1" width="166">
mouse_opaque="true" name="about second life..." width="166">
最後是通過下面這樣子來呼叫這個函式的:
gloginmenubarview = (llmenubargl*)guictrlfactory->buildmenu("menu_login.xml", gmenuholder);
第二人生的原始碼分析 八十 介面語言的選擇
隨著全球化的發展,地球變得平坦了。我有乙個同事現在還在美國 oracle進行學習,說明軟體是真正的無國界產品。那麼在第二人生裡,到底是怎麼樣實現多語言的支援呢?帶著這個問題來分析下面一段 如下 001void lluictrlfactory setuppaths 002 025 設定當前正在設定的語...
第二人生的原始碼分析 2 第二人生的基本功能
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!第二人生的基功能可以定義為網路遊戲 社交網路和 web2.0 作為網路遊戲,它可以讓人扮演角色,也就是第二人生裡的居民。居民只要買到地,或者租到地後就可以建造各種各樣的自己想得到的東西。比如建造遊樂園,或者建造電影院,又或者建造過山車。同時,還可以...
第二人生的原始碼分析 六十三 類Multi實現多請求
從前面看到類 easy是封裝了乙個請求,但往往需要傳送多個請求的情況,這樣就需要實現多個請求能同時工作的類,在第二人生裡是把這部份功能放在類multi裡的,同樣它也是llcurl類的巢狀類。它的宣告如下 001 class llcurl multi 002 這個類主要把多個 easy請求放到一起操作...