编写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) 
此代码:创建了一个简单的菜单,并添加了一个包含两个子菜单的弹出式菜单到它上面。
 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bluekane/archive/2009/01/09/3738535.aspx

你可能感兴趣的:(function,脚本,layout,System,lua,menu)