Ich habe einen Tooltip und ich möchte, dass er detailliertere Informationen anzeigt, wenn die SHIFT Taste gedrückt gehalten wird. Der folgende Code funktioniert so weit:WoW Addon - Dynamischer Tooltip, während die Taste gedrückt wird
function myAddonFrame_OnEnter(self)
myAddon_GenerateTooltip(self)
end
function myAddonFrame_OnLeave(self)
GameTooltip:Hide()
end
function myAddon_GenerateTooltip(self)
GameTooltip:SetOwner(self or UIParent, "ANCHOR_LEFT")
GameTooltip:SetText(“myAddon”, 0.7, 0, 1)
GameTooltip:AddLine(" ", 1, 1, 1)
if IsShiftKeyDown() then
-- Show some more details, if the SHIFT key is pressed.
GameTooltip:AddLine(“Some detailed stuff about god and the world.”, 1, 1, 1)
GameTooltip:AddLine(“Even more great stuff to read.”, 0.9, 0.8, 0.1, 1)
else
-- Basic information to be displayed when no button is pressed.
GameTooltip:AddLine(“Some basic information. Yaaay!“, 1, 1, 1)
GameTooltip:AddLine(" ", 1, 1, 1)
GameTooltip:AddLine(“Hold SHIFT for more information…”, 0.5, 0.5, 0.5)
end
GameTooltip:Show()
end
Das funktioniert aber nur, wenn die SHIFT-Taste gedrückt wird, bevor die Maus schwebt die myAddonFrame. Es wird auch die detaillierten Informationen anzeigen, selbst wenn Sie SHIFT loslassen, solange der Mauszeiger auf dem myAddonFrame bleibt. Aber ich will es dynamisch!
Meine Frage hier ist:
Wie kann ich die Tooltip machen Schlüssel aktualisieren sich nach der SHIFT, wenn der Mauszeiger auf dem Rahmen bleibt?
Ich habe etwas im Sinn, wenn ich über einen Gegenstand in WoW schwebe und nur solange ich die SHIFT Taste halte, wird dieser Gegenstand mit dem verglichen, was ich gerade trage. Ich möchte genau diesen Effekt, nur im selben Tooltip.
Ich hoffe, dass jemand mich in die richtige Richtung schieben kann. Ich habe versucht, MODIFIER_STATE_CHANGED zu verwenden, aber ich habe es nicht funktioniert.
Oh, und während wir über toolips sprechen werden ... hier ist ein Bonus-Frage:
Ist es möglich, sie ein wenig zu formatieren? Fett, kursiv, Schriftgröße, Farbänderungen für ein einzelnes Wort in einer Zeile usw.? Ich habe nichts besonderes gefunden here (wowprogramming.com), aber vielleicht habe ich es übersehen.
--- --- GELÖST
Für die, die in der Lösung interessiert:
ich verwendet, um den Code-Schnipsel von Nathanyel und es ein wenig angepasst. Da ich nur eine XML-Datei für alle Frames und eine entsprechende LUA-Datei für die Funktionen verwende, wollte ich dort keinen neuen Frame erstellen. Aber ich habe einen Weg gefunden, den vorhandenen myAddonFrame
auch für den dynamischen Tooltip zu verwenden.
Mein Code oben von perfekt funktioniert und ich hatte nur folgendes hinzufügen:
-- [ALL THE CODE ABOVE!]
function myAddonFrame_OnLoad(frame)
frame:RegisterEvent("MODIFIER_STATE_CHANGED") -- Needed for the dynamic tool tip.
end
function myAddonFrame_OnEvent(frame, event, ...)
-- Fired, when any keyboard key is pressed.
local key, state = select(1, ...)
if (event == "MODIFIER_STATE_CHANGED") then
-- Switch the dynamic tooltip when the SHIFT key is held.
if myAddonFrame:IsMouseOver() and ((key == "LSHIFT") or (key == "RSHIFT")) then
myAddon_GenerateTooltip(frame)
end
end
end
Das ist es! Danke an Nathanyel für den Denkanstoß. :)
Während ich den MODIFIER_STATE_CHANGED versuchte, benutzte ich immer den gleichen Frame (tatsächlich besteht dieses Addon im Moment aus nur einem einzigen Frame). Das könnte die ganze Zeit das Problem gewesen sein. Ich werde heute Abend einen Versuch machen und Ihnen meine Ergebnisse erzählen. Danke für jetzt! :) – nehegeb
Nun, das hat wirklich geholfen! Ich habe die letzte Lösung in die obige Frage integriert. Danke noch einmal! – nehegeb