WoW:Make Frames Closable With the "Esc" Key: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
(example + some fancy work)
m (Move page script moved page Make Frames Closable With the "Esc" Key to Make Frames Closable With the "Esc" Key without leaving a redirect)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==How To==
To make your main frame closable with the ESCape key go into the OnLoad function and add the following line :
To make your main frame closable with the ESCape key go into the OnLoad function and add the following line :


Line 10: 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 17: Line 16:
  <Scripts>
  <Scripts>
  <OnLoad>
  <OnLoad>
  tinsert(UISpecialFrames,this:GetName());
  tinsert(UISpecialFrames, self:GetName());
  </OnLoad>
  </OnLoad>
  <OnShow>
  <OnShow>
Line 28: Line 27:
  </Frame>
  </Frame>
===Description===
===Description===
this:GetName() returns the current UI Object's name and in this case our Frame Name. Using this will make the code more generic.
self:GetName() returns the current UI Object's name; in this case, the frame's name. This makes the code more flexible.


the OnShow and OnHide parts will play the usual sound that's played when you open/close blizzards frames - e.g. your character frame
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)


[[Category: HOWTOs|Make frames closable with the ESCape key]]
[[Category: HOWTOs|Make frames closable with the ESCape key]]

Latest revision as of 04:48, 15 August 2023

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[edit]

<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[edit]

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[edit]

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)