如何在按下 escape 键时关闭 AceGUI 3.0 框架?

我正在使用 WowAce 的 Ace3 AceGUI 库进行魔兽世界插件的开发。我希望当按下 escape 键时,我的框架能够被关闭,就像在游戏中一样。

这是如何创建框架的代码:

    local frame = AceGUI:Create("Frame")
    frame:SetTitle("Flare")
    frame:SetStatusText("Ready")
    frame:SetCallback("OnClose", function(widget) AceGUI:Release(widget) end)
    frame:SetLayout("List")
点赞
用户1016004
用户1016004

作为《魔兽世界》API的一部分,UISpecialFrames表被提供作为一个全局变量,当按下Esc键时,该表中的任何字符串都将从全局变量表中获取为键;如果该全局变量是一个打开的《魔兽世界》框架,它将被关闭。

这意味着你需要将你的《魔兽世界》框架声明为全局变量,并使用table.insert将变量的名称添加到UISpecialFrames表中。请注意,AceGUI框架的《魔兽世界》框架存储在其frame键下。代码示例:

    local frame = AceGUI:Create("Frame")
    frame:SetTitle("Flare")
    frame:SetStatusText("Ready")
    frame:SetCallback("OnClose", function(widget) AceGUI:Release(widget) end)
    frame:SetLayout("List")

    -- 将框架作为名为"MyGlobalFrameName"的全局变量添加
    _G["MyGlobalFrameName"] = frame.frame
    -- 将全局变量"MyGlobalFrameName"注册为“特殊框架”,
    -- 这样它将在按下Esc键时关闭。
    tinsert(UISpecialFrames, "MyGlobalFrameName")
2020-04-14 18:47:34