这个小节主要介绍下雪月Lua框架xLua\module\WindowxLua\module\KeyboardxLua\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): 回调函数,接收两个参数:eventparams
    • 返回值: 返回事件对象。
    • 示例:

      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): 回调函数,接收两个参数:eventparams
    • 返回值: 返回事件对象。
    • 示例:

      local event_mouse_click = mouse:event('鼠标-点击', function(event, params)
          print("鼠标点击位置:", params.x, params.y)
      end)

综合示例

下面是一个综合示例,展示了如何使用 windowkeyboardmouse 模块来创建窗口、注册键盘热键和鼠标事件。

-- 引入必要的模块
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_F5xconst.keyboard.COMB_CTRL
  • 事件回调: 回调函数中的 params 参数包含了事件的详细信息,如按键码、鼠标位置等。
  • 窗口方法: 窗口对象 myWindow 可能包含其他方法,如 msg 用于在窗口中显示消息。

UI模块

xLua.module.ui 文件夹包含了一系列用于创建和管理用户界面(UI)元素的模块。这些模块提供了丰富的功能,可以用来构建复杂的用户界面,包括按钮、文本框、图标、面板等。

主要模块

  1. base.lua: UI 基类,所有 UI 元素都继承自这个基类。
  2. img.lua: 图像元素。
  3. text.lua: 文本元素。
  4. icon.lua: 图标元素。
  5. slot.lua: 插槽元素。
  6. button.lua: 按钮元素。
  7. radiobox.lua: 单选框元素。
  8. checkbox.lua: 复选框元素。
  9. verticalscrollbar.lua: 垂直滚动条元素。
  10. panel.lua: 面板元素。
  11. window.lua: 窗口元素。
  12. tooltip.lua: 提示框元素。
  13. game: 游戏特定的 UI 元素。
  14. 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()