要实现当鼠标悬停在某个物品上时只执行一次,并在切换到其他物品时再次执行,您可以使用一个标记来记录当前是否已经执行过该物品的操作。

以下是一个简单的示例代码,演示了如何在鼠标悬停期间只执行一次操作:

local frame = CreateFrame('Frame')  -- 创建一个框架用于处理事件
frame:SetScript('OnEvent', function(self, event, ...) 
    -- 当事件触发时执行以下代码
    if event == 'PLAYER_LOGIN' then
        -- 注册 OnTooltipSetItem 事件的回调函数
        GameTooltip:HookScript('OnTooltipSetItem', function(self)
            -- 在这里编写需要执行的操作
            if not self.itemProcessed then
                -- 执行操作
                self.itemProcessed = true
                -- 插件自定义的操作,例如修改提示框内容或样式
            end
        end)
    end
end)

frame:RegisterEvent('PLAYER_LOGIN')  -- 注册 PLAYER_LOGIN 事件

在上述示例中,我们在 OnTooltipSetItem 的回调函数中添加了一个 self.itemProcessed 的标记。该标记初始值为 nil,当第一次悬停在某个物品上时,执行相关操作并将标记设置为 true,以后再悬停在其他物品上时,由于标记已经被设置为 true,将不再执行相关操作。

请注意,这只是一个示例,并不能保证与您的插件环境完全兼容。在实际编写插件时,请根据自己的需求和插件框架进行相应的调整和修改。

希望这能帮到您!如有任何进一步的问题,请随时提问。


原文地址: https://www.cveoy.top/t/topic/RIc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录