WoWInterface SVN Eui

[/] [Eui/] [lib/] [Eui/] [anim.lua] - Rev 2

Compare with Previous | Blame | View Log

------------------------------------------------------------------------
-- Animation Functions (Credit AlleyCat, Hydra)
------------------------------------------------------------------------
local E, C = unpack(select(2, ...)) -- Import Functions/Constants, Config, Locales

E.SetUpAnimGroup = function(self)
        self.anim = self:CreateAnimationGroup("Flash")
        self.anim.fadein = self.anim:CreateAnimation("ALPHA", "FadeIn")
        self.anim.fadein:SetChange(1)
        self.anim.fadein:SetOrder(2)

        self.anim.fadeout = self.anim:CreateAnimation("ALPHA", "FadeOut")
        self.anim.fadeout:SetChange(-1)
        self.anim.fadeout:SetOrder(1)
end

E.Flash = function(self, duration)
        if not self.anim then
                E.SetUpAnimGroup(self)
        end

        self.anim.fadein:SetDuration(duration)
        self.anim.fadeout:SetDuration(duration)
        self.anim:Play()
end

E.StopFlash = function(self)
        if self.anim then
                self.anim:Finish()
        end
end

E.AnimGroup = function (self,x,y,duration)
        self.anim = self:CreateAnimationGroup("Move_In")
        self.anim.in1 = self.anim:CreateAnimation("Translation")
        self.anim.in1:SetDuration(0)
        self.anim.in1:SetOrder(1)
        self.anim.in2 = self.anim:CreateAnimation("Translation")
        self.anim.in2:SetDuration(duration)
        self.anim.in2:SetOrder(2)
        self.anim.in2:SetSmoothing("OUT")
        self.anim_o = self:CreateAnimationGroup("Move_Out")
        self.anim_out2 = self.anim_o:CreateAnimation("Translation")
        self.anim_out2:SetDuration(duration)
        self.anim_out2:SetOrder(1)
        self.anim_out2:SetSmoothing("IN")
        self.anim.in1:SetOffset(x,y)
        self.anim.in2:SetOffset(-x,-y)
        self.anim_out2:SetOffset(x,y)
        self.anim_o:SetScript("OnFinished",function() self:Hide() end)
end

E.SlideIn = function(self)
        if not self.anim then
                E.AnimGroup(self)
        end

        self.anim_o:Stop()
        self:Show()
        self.anim:Play()
end

E.SlideOut = function(self)
        if self.anim then
                self.anim:Finish()
        end

        self.anim:Stop()
        self.anim_o:Play()
end

Compare with Previous | Blame