如何从魔兽世界插件中的Frame调用匿名函数



我使用的代码生成器会发出许多匿名函数。我想我可以试着从相框中调用一个,但似乎不起作用;我得到:

Date: 2020-09-18 18:42:27
ID: 1
Error occured in: Global
Count: 1
Message: [string "HelloWorldFrame:OnLoad"] line 1:
attempt to call global 'HelloWorld' (a nil value)
Debug:
[C]: HelloWorld()
[string "*:OnLoad"]:1:
[string "*:OnLoad"]:1

如果我更改以下内容:

local HelloWorld = function()
print("Hello, World!");
end

至:

function HelloWorld() 
print("Hello, World!"); 
end

它会起作用的。

这是我的XML:

<Ui xmlns="http://www.blizzard.com/wow/ui/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.blizzard.com/wow/ui/ 
....FrameXMLUI.xsd">
<Frame name="HelloWorldFrame">
<Scripts>
<OnLoad>
HelloWorld();
</OnLoad>
</Scripts>
</Frame>
</Ui>

这可能吗?

简单的答案是,如果使用XML,则需要使用全局变量。像这样的

Lua

MyUniqueAddon = {}
function MyUniqueAddon:HelloWorld()
print("Hello, World!"); 
end

XML

<Frame name="HelloWorldFrame">
<Scripts>
<OnLoad>
MyUniqueAddon:HelloWorld();
</OnLoad>
</Scripts>
</Frame>

你也可以在Lua 中做任何事情

local function OnEvent(self, event)
print("Hello, World!"); 
end
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:SetScript("OnEvent", OnEvent)

或者在这种情况下,如果你只想打印一些东西作为练习,根本不使用框架

print("Hello, World!"); 

相关内容

  • 没有找到相关文章

最新更新