本教程所列的代码是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)
此代码:创建了一个简单的菜单,并添加了一个包含两个子菜单的弹出式菜单到它上面。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bluekane/archive/2009/01/09/3738535.aspx