cegui 9 编写CEGUI脚本入门
本教程所列的代码是Lua脚本,它用到了CEGUI自0.4版本起所绑定的CEGUILua模块。这些代码片段可能没有多少实际用途,但它们足以展示CEGUI和Lua结合起来使用的可能性。
更改记录级别
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.
简单的界面
- -- 创建GUI sheet
- local sheet = CEGUI.WindowManager:getSingleton():createWindow(
- "DefaultGUISheet","root");
- CEGUI.System:getSingleton():setGUISheet(sheet) -- 然后,把它附着到系统中
- -- 创建一个FrameWindow
- local fw = CEGUI.WindowManager:getSingleton():createWindow(
- "TaharezLook/FrameWindow","framewnd");
- -- 把它附着到sheet上
- sheet:addChildWindow(fw)
-
- -- 设置它的大小和位置
- local sz = CEGUI.Size(0.5,0.5)
- local pos = CEGUI.Point(0.2,0.1)
- fw:setSize(sz)
- fw:setPosition(pos)
- -- 禁止用户改变大小
- fw:setProperty("SizingEnabled","False")
-
- -- 使关闭按钮生效
- fw:subscribeEvent("CloseClicked","fwCloseClicked")
-
- -- CloseClicked事件的处理函数
- function fwCloseClicked(eventArgs)
- local we = CEGUI.toWindowEventArgs(eventArgs)
- CEGUI.WindowManager:getSingleton():destroyWindow(we.window) -- 销毁frame窗口
- end
此代码:创建一个GUISheet,把它附着到System上。然后,创建一个FrameWindow,设置它的大小和位置,禁用更改大小属性并为CloseClicked事件绑定了事件处理函数。
类型转换的另一种方法
- -- CloseClicked事件的处理函数
- function fwCloseClicked(eventArgs)
- local we = tolua.cast(eventArgs,"CEGUI::WindowEventArgs")
- CEGUI.WindowManager:getSingleton():destroyWindow(we.window) -- 销毁frame窗口
- end
此代码:展示了把
EventArgs对象转换成
WindowEventArgs类型的另一种方法。
载入一个
layout
- local w = CEGUI.WindowManager:getSingleton():loadWindowLayout(
- "../datafiles/layouts/test.layout")
- CEGUI.System:getSingleton():getGUISheet():addChildWindow(w)
此代码:载入了一个layout并把返回的窗口添加到当前的GUISheet中。
弹出菜单
- -- 我们将多次使用WindowManager对象
- local wmgr = CEGUI.WindowManager:getSingleton()
-
- -- 设置菜单
- local bar = wmgr:createWindow("WindowsLook/Menubar","the_menu_bar")
- bar:setSize(CEGUI.Size(1,0.1))
- CEGUI.System:getSingleton():getGUISheet():addChildWindow(bar)
-
- -- 添加一个菜单项
- local item = wmgr:createWindow("WindowsLook/MenubarItem","the_menu_bar_item")
- item:setText("Bar item")
- bar:addChildWindow(item)
-
- -- 添加一个弹出菜单到菜单项中
- local pop = wmgr:createWindow("WindowsLook/PopupMenu","the_popup_menu")
- item:addChildWindow(pop)
-
- -- 添加一些菜单项到弹出菜单中
- item = wmgr:createWindow("WindowsLook/PopupMenuItem","the_popup_menu_item_1")
- item:setText("Popup item 1")
- pop:addChildWindow(item)
-
- item = wmgr:createWindow("WindowsLook/PopupMenuItem","the_popup_menu_item_2")
- item:setText("Popup item 2")
- pop:addChildWindow(item)
此代码:创建了一个简单的菜单,并添加了一个包含两个子菜单的弹出式菜单到它上面。