多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
``` --[[一个变量,可以让我们知道是否已经询问服务器并验证我们是否位于正确的区域中。每个区域都需要进行一次检查,以获取我们的位置更新。否则,x和y值可以为0]] local zone = nil --[[我们将使用此变量来总结调用函数UpdateCoordinates所经过的时间。]] local TimeSinceLastUpdate = 0 --[[更新坐标]] local function UpdateCoordinates(self, elapsed) --[[向服务器查询角色当前所在的区域坐标。如果它等于变量区域坐标,则我们已经将AddOn设置为该区域。否则,进入if块刷新区域坐标]] if zone ~= GetRealZoneText() then --[[将我们的区域变量设置为角色当前区域坐标]] zone = GetRealZoneText() --[[调用函数SetMapToCurrentZone(),以便将我们的AddOn设置为此区域]] SetMapToCurrentZone() end --[[将之前保存的内容与下一条代码行的经过时间相加]] TimeSinceLastUpdate = TimeSinceLastUpdate + elapsed --[[由于没有必要每秒更新30-60次以上,因此我们每半秒更新一次当前位置]] if TimeSinceLastUpdate > .5 then --[[如果已超过一秒钟,请进行更新!首先,清除旧的总经过时间,以便我们可以在约1/60秒内重新开始]] TimeSinceLastUpdate = 0 --[[该函数将返回我们的x和y坐标;然后将它们分别放入我们的posX和posY变量中]] local posX, posY = GetPlayerMapPosition("player"); --[[返回的值将在0到1之间。只需进行一点数学运算就可以将x和y值的任意数字(例如:7865转换为78.65)]] local x = math.floor(posX * 10000)/100 local y = math.floor(posY*10000)/100 --[[将x和y坐标文本设置为有趣的字体。98FB98引用一种时髦的绿色。大功告成]] eCoordinatesFontString:SetText("|c98FB98ff("..x..", "..y..")") end end --[[监听插件加载状态,一旦加载了此插件就触发此函数]] function eCoordinates_OnLoad(self, event,...) self:RegisterEvent("ADDON_LOADED") end --[[.xml文件中的第6行,一旦所有 加载项都已完全加载,就会调用此函数]] function eCoordinates_OnEvent(self, event, ...) if event == "ADDON_LOADED" and ... == "eCoordinates" then --[[允许我们在任何插件加载完成后停止监听。我们只关心自己的插件,因此一旦知道它已加载,就可以停止检查加载的插件]] self:UnregisterEvent("ADDON_LOADED") --[[SetSize函数可设置框架的大小,但不会更改字体字符串的大]] eCoordinates:SetSize(100, 50) --[[我们创建的框架的“顶部”将位于Minimap的底部,x的偏移量为5,y的偏移量为-5。有关SetPoint的参考(以及一般的GUI定位),其中包含的所有方法都与帧/ GUI的移动,位置和操纵有关。]] eCoordinates:SetPoint("TOP", "Minimap", "BOTTOM", 5, -5) --[[此行引用了代码的另一部分(UpdateCoordinates函数。)此框架将侦听OnUpdate事件。OnUpdate的速度与FPS一样快。注意:当发生更新时(每秒〜30-60x,每次将调用UpdateCoordinates函数。这使您的x和y余弦图非常频繁地更新]] eCoordinates:SetScript("OnUpdate", UpdateCoordinates) --[[创建一个名为eCoordinateFontString的字体字符串,它将保存我们的x和y值。需要“ ARTWORK”和“ GameFontNormal”参数 ]] local coordsFont = eCoordinates:CreateFontString("eCoordinatesFontString", "ARTWORK", "GameFontNormal") --[[必填!!!这是框架的位置字符串。否则,与框架相比,字体字符串将不知道将其自身放置在何处,因此将永远不会显示]] coordsFont:SetPoint("CENTER", "eCoordinates", "CENTER", 0, 0) --[[显示字体字符串,以便我们可以看到它。(请注意,它仍然不可见,因为它包含在不可见的框架中。)]] coordsFont:Show() --[[显示框架,以便我们可以看到框架及其内容-包括字体字符串。现在所有这些都应该显示出来]] eCoordinates:Show() end end ```