Change the alpha on a frame/subframes in response to mouse

This snippet will change the alpha of a frame (and all of it's sub-children due to the way alpha works) depending on whether or not the mouse is over the frame or not. See http://wowprogramming.com/forums/development/300 for a more in-depth discussion of this problem and solution.

Snippet

function SetActiveInactive(frame, active, inactive)
   frame:SetScript("OnUpdate", function(self, elapsed)
         local current = GetMouseFocus()
         
         -- Scan through the parent chain
         while current ~= nil do
            if current == frame then
               frame:SetAlpha(active)
               return
            end
            
            current = current:GetParent()
         end
         
         frame:SetAlpha(inactive)
   end)     
end

-- Example usage: SetActiveInactive(PlayerFrame, 1.0, 0.7)
Posted by jnwhiteh at Sat, 05 Jun 2010 17:26:56 +0000