WoW:Make Frames Closable With the "Esc" Key: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
m (Changed "this" to "self", and fixed grammar.) |
||
Line 9: | Line 9: | ||
<Frame name="ExampleFrame" parent="UIParent"> | <Frame name="ExampleFrame" parent="UIParent"> | ||
<Size> | <Size> | ||
<AbsDimension x="640" y="512"/> | <AbsDimension x="640" y="512" /> | ||
</Size> | </Size> | ||
<Anchors> | <Anchors> | ||
Line 16: | Line 16: | ||
<Scripts> | <Scripts> | ||
<OnLoad> | <OnLoad> | ||
tinsert(UISpecialFrames, | tinsert(UISpecialFrames, self:GetName()); | ||
</OnLoad> | </OnLoad> | ||
<OnShow> | <OnShow> | ||
Line 27: | Line 27: | ||
</Frame> | </Frame> | ||
===Description=== | ===Description=== | ||
self:GetName() returns the current UI Object's name; in this case, the frame's name. This makes the code more flexible. | |||
OnShow and OnHide will play the same sound you hear when you open and close your character frame, respectively. | |||
== EditBoxes and OnEscapePressed == | == EditBoxes and OnEscapePressed == |
Revision as of 03:39, 26 July 2011
To make your main frame closable with the ESCape key go into the OnLoad function and add the following line :
tinsert(UISpecialFrames,"MainFrameName");
where MainFrameName is the name of your main frame of the application.
Example
<Frame name="ExampleFrame" parent="UIParent"> <Size> <AbsDimension x="640" y="512" /> </Size> <Anchors> <Anchor point="CENTER" /> </Anchors> <Scripts> <OnLoad> tinsert(UISpecialFrames, self:GetName()); </OnLoad> <OnShow> PlaySound("igCharacterInfoOpen"); </OnShow> <OnHide> PlaySound("igCharacterInfoClose"); </OnHide> </Scripts> </Frame>
Description
self:GetName() returns the current UI Object's name; in this case, the frame's name. This makes the code more flexible.
OnShow and OnHide will play the same sound you hear when you open and close your character frame, respectively.
EditBoxes and OnEscapePressed
EditBox type frames have an "OnEscapePressed" handler, which will prevent this method from working with them. For these frames you can instead use:
myeditboxframe:SetScript("OnEscapePressed", function(self) self:Hide() end)