当前位置: 首页 > 工具软件 > CEGUI > 使用案例 >

cegui 9 编写CEGUI脚本入门

温举
2023-12-01
 

cegui 9 编写CEGUI脚本入门

本教程所列的代码是Lua脚本,它用到了CEGUI0.4版本起所绑定的CEGUILua模块。这些代码片段可能没有多少实际用途,但它们足以展示CEGUILua结合起来使用的可能性。
更改记录级别
 
 local logger = CEGUI.Logger:getSingleton()--获取logger
 local lvl = logger.getLoggingLevel()  --获取记录级别
 
 if    lvl < CEGUI.Insane then
       logger:setLoggingLevel(lvl +1)
 end
此代码:每次增加记录级别一个等级直到到达Insane级别.
载入一个Scheme
CEGUI.SchemeManager:getSingleton():loadScheme("../datafiles/scheme/TaharezLook.scheme")
此代码:载入了TaharezLook.scheme.
 
简单的界面
  1. -- 创建GUI sheet  
  2. local sheet = CEGUI.WindowManager:getSingleton():createWindow(  
  3.                                     "DefaultGUISheet","root");  
  4. CEGUI.System:getSingleton():setGUISheet(sheet) -- 然后,把它附着到系统中  
  1. -- 创建一个FrameWindow  
  2. local fw = CEGUI.WindowManager:getSingleton():createWindow(  
  3.                             "TaharezLook/FrameWindow","framewnd");  
  4. -- 把它附着到sheet上  
  5. sheet:addChildWindow(fw)  
  6.   
  7. -- 设置它的大小和位置  
  8. local sz = CEGUI.Size(0.5,0.5)  
  9. local pos = CEGUI.Point(0.2,0.1)  
  10. fw:setSize(sz)  
  11. fw:setPosition(pos)  
  12. -- 禁止用户改变大小  
  13. fw:setProperty("SizingEnabled","False")  
  14.   
  15. -- 使关闭按钮生效  
  16. fw:subscribeEvent("CloseClicked","fwCloseClicked")  
  17.   
  18. -- CloseClicked事件的处理函数  
  19. function fwCloseClicked(eventArgs)  
  20.     local we = CEGUI.toWindowEventArgs(eventArgs)  
  21.     CEGUI.WindowManager:getSingleton():destroyWindow(we.window) -- 销毁frame窗口  
  22. end  
此代码:创建一个GUISheet,把它附着到System上。然后,创建一个FrameWindow,设置它的大小和位置,禁用更改大小属性并为CloseClicked事件绑定了事件处理函数。
类型转换的另一种方法
  1. -- CloseClicked事件的处理函数  
  2. function fwCloseClicked(eventArgs)  
  3.     local we = tolua.cast(eventArgs,"CEGUI::WindowEventArgs")  
  4.     CEGUI.WindowManager:getSingleton():destroyWindow(we.window) -- 销毁frame窗口  
  5. end  
此代码:展示了把 EventArgs对象转换成 WindowEventArgs类型的另一种方法。
载入一个 layout
  1. local w = CEGUI.WindowManager:getSingleton():loadWindowLayout(  
  2.                         "../datafiles/layouts/test.layout")  
  3. CEGUI.System:getSingleton():getGUISheet():addChildWindow(w)  
此代码:载入了一个layout并把返回的窗口添加到当前的GUISheet中。

弹出菜单
  1. -- 我们将多次使用WindowManager对象  
  2. local wmgr = CEGUI.WindowManager:getSingleton()  
  3.   
  4. -- 设置菜单  
  5. local bar = wmgr:createWindow("WindowsLook/Menubar","the_menu_bar")  
  6. bar:setSize(CEGUI.Size(1,0.1))  
  7. CEGUI.System:getSingleton():getGUISheet():addChildWindow(bar)  
  8.   
  9. -- 添加一个菜单项  
  10. local item = wmgr:createWindow("WindowsLook/MenubarItem","the_menu_bar_item")  
  11. item:setText("Bar item")  
  12. bar:addChildWindow(item)  
  13.   
  14. -- 添加一个弹出菜单到菜单项中  
  15. local pop = wmgr:createWindow("WindowsLook/PopupMenu","the_popup_menu")  
  16. item:addChildWindow(pop)  
  17.   
  18. -- 添加一些菜单项到弹出菜单中  
  19. item = wmgr:createWindow("WindowsLook/PopupMenuItem","the_popup_menu_item_1")  
  20. item:setText("Popup item 1")  
  21. pop:addChildWindow(item)  
  22.   
  23. item = wmgr:createWindow("WindowsLook/PopupMenuItem","the_popup_menu_item_2")  
  24. item:setText("Popup item 2")  
  25. pop:addChildWindow(item)  
此代码:创建了一个简单的菜单,并添加了一个包含两个子菜单的弹出式菜单到它上面。
 
 类似资料: