这个小节主要介绍下雪月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()