这个小节主要介绍下雪月Lua框架xLua\module\Window
、xLua\module\Keyboard
和 xLua\module\Mouse
这三个文件夹内与窗口、键盘和鼠标相关的方法。
1. 窗口模块
文件路径: xLua\module\Window\init.lua
描述:
xLua\module\Window
模块提供了创建和管理窗口的功能。
主要方法:
window:new(params)
:- 描述: 创建一个新的窗口对象。
参数:
params
(table): 包含创建窗口所需参数的表,如x
,y
,w
,h
,title
等。x
(number): 窗口左上角的X坐标。y
(number): 窗口左上角的Y坐标。w
(number): 窗口的宽度。h
(number): 窗口的高度。title
(string, 可选): 窗口的标题。
- 返回值: 返回一个窗口对象。
示例:
local myWindow = window:new({ x = 0.1, y = 0.1, w = 0.3, h = 0.3, title = "My Window" })
2. 键盘模块
文件路径: xLua\module\Keyboard\default.lua
描述:
xLua\module\Keyboard
模块提供了注册和处理键盘事件的功能。
主要方法:
keyboard:hotkey(eventNmae, combKey, key, callback)
:- 描述: 注册一个热键事件。
参数:
eventNmae
(string): 事件名称,如 "键盘-按下" 或 "键盘-松开"。combKey
(int): 组合键,可以多个组合键相加,如xconst.keyboard.COMB_CTRL
。key
(int): 主要按键,如xconst.keyboard.KEY_F5
。callback
(function): 回调函数,接收两个参数:event
和params
。
- 返回值: 返回事件对象。
示例:
local event_f5 = keyboard:hotkey('键盘-按下', 0, xconst.keyboard.KEY_F5, function(event, params) print("F5 键被按下") end)
3. 鼠标模块
文件路径: xLua\module\Mouse\init.lua
描述:
xLua\module\Mouse
模块提供了注册和处理鼠标事件的功能。
主要方法:
mouse:event(eventName, callback)
:- 描述: 注册一个鼠标事件。
参数:
eventName
(string): 事件名称,如 "鼠标-按下"、"鼠标-松开"、"鼠标-点击"、"鼠标-双击"、"鼠标-移动"、"鼠标-滚轮"。callback
(function): 回调函数,接收两个参数:event
和params
。
- 返回值: 返回事件对象。
示例:
local event_mouse_click = mouse:event('鼠标-点击', function(event, params) print("鼠标点击位置:", params.x, params.y) end)
综合示例
下面是一个综合示例,展示了如何使用 window
、keyboard
和 mouse
模块来创建窗口、注册键盘热键和鼠标事件。
-- 引入必要的模块
require 'xLua.module.Window'
require 'xLua.module.Keyboard'
require 'xLua.module.Mouse'
-- 创建一个窗口
local myWindow = window:new({
x = 0.1,
y = 0.1,
w = 0.3,
h = 0.3,
title = "My Window"
})
-- 注册一个键盘热键 (F5)
local event_f5 = keyboard:hotkey('键盘-按下', 0, xconst.keyboard.KEY_F5, function(event, params)
print("F5 键被按下")
-- 在窗口中显示消息
myWindow:msg("F5 键被按下")
end)
-- 注册一个鼠标点击事件
local event_mouse_click = mouse:event('鼠标-点击', function(event, params)
print("鼠标点击位置:", params.x, params.y)
-- 在窗口中显示消息
myWindow:msg("鼠标点击位置: " .. params.x .. ", " .. params.y)
end)
-- 注册一个鼠标移动事件
local event_mouse_move = mouse:event('鼠标-移动', function(event, params)
-- 打印鼠标移动位置
print("鼠标移动位置:", params.x, params.y)
end)
注意事项
- 常量使用: 确保你使用了正确的常量,如
xconst.keyboard.KEY_F5
和xconst.keyboard.COMB_CTRL
。 - 事件回调: 回调函数中的
params
参数包含了事件的详细信息,如按键码、鼠标位置等。 - 窗口方法: 窗口对象
myWindow
可能包含其他方法,如msg
用于在窗口中显示消息。
UI模块
xLua.module.ui
文件夹包含了一系列用于创建和管理用户界面(UI)元素的模块。这些模块提供了丰富的功能,可以用来构建复杂的用户界面,包括按钮、文本框、图标、面板等。
主要模块
base.lua
: UI 基类,所有 UI 元素都继承自这个基类。img.lua
: 图像元素。text.lua
: 文本元素。icon.lua
: 图标元素。slot.lua
: 插槽元素。button.lua
: 按钮元素。radiobox.lua
: 单选框元素。checkbox.lua
: 复选框元素。verticalscrollbar.lua
: 垂直滚动条元素。panel.lua
: 面板元素。window.lua
: 窗口元素。tooltip.lua
: 提示框元素。game
: 游戏特定的 UI 元素。event.lua
: UI 事件处理。
使用案例
下面是一个具体的案例,展示了如何使用 xLua.module.ui
模块创建一个简单的用户界面,包括一个窗口、一个按钮和一个文本框。
案例:创建一个包含按钮和文本框的窗口
-- 引入必要的模块
local ui = require "xLua.module.ui"
local xui = require "xui"
-- 创建一个新的窗口
local myWindow = xui.window:new{
title = "示例窗口",
width = 0.3,
height = 0.2,
x = 0.35,
y = 0.35,
visible = true,
}
-- 创建一个文本框
local myText = xui.text:new{
parent = myWindow,
text = "点击按钮更新文本",
x = 0.05,
y = 0.4,
width = 0.9,
height = 0.2,
align = "center",
}
-- 创建一个按钮
local myButton = xui.button:new{
parent = myWindow,
value = "点击我",
x = 0.35,
y = 0.1,
width = 0.3,
height = 0.2,
on_click = function(self, key)
-- 更新文本框内容
myText.text = "按钮已点击!"
print("按钮已点击!")
end,
}
-- 显示窗口
myWindow:show()