源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

158 rader
5.7 KiB

TweenFunc = TweenFunc or {}
local TweenFunc = TweenFunc
TweenFunc.LINEAR = "linear" --线性
TweenFunc.EASE_IN = "easeIn"
TweenFunc.EASE_OUT = "easeOut"
TweenFunc.EASE_IN_OUT = "easeInOut"
TweenFunc.EASE_OUT_IN = "easeOutIn"
TweenFunc.EASE_IN_BACK = "easeInBack"
TweenFunc.EASE_OUT_BACK = "easeOutBack"
TweenFunc.EASE_IN_OUT_BACK = "easeInOutBack"
TweenFunc.EASE_OUT_IN_BACK = "easeOutInBack"
TweenFunc.EASE_IN_ELASTIC = "easeInElastic"
TweenFunc.EASE_OUT_ELASTIC = "easeOutElastic"
TweenFunc.EASE_IN_OUT_ELASTIC = "easeInOutElastic"
TweenFunc.EASE_OUT_IN_ELASTIC = "easeOutInElastic"
TweenFunc.EASE_IN_BOUNCE = "easeInBounce"
TweenFunc.EASE_OUT_BOUNCE = "easeOutBounce"
TweenFunc.EASE_IN_OUT_BOUNCE = "easeInOutBounce"
TweenFunc.EASE_OUT_IN_BOUNCE = "easeOutInBounce"
TweenFunc.EASE_IN_TO_OUT_BACK = "easeInToOutBack"
TweenFunc.PINGPONG = "pingPong"
TweenFunc.EASE_OUT_QUINT = "easeOutQuint"
TweenFunc.EASE_IN_QUINT = "easeInQuint"
function TweenFunc.linear(ratio)
return ratio
end
function TweenFunc.easeIn(ratio)
return ratio * ratio * ratio
end
function TweenFunc.easeOut(ratio)
local invRatio = ratio - 1.0
return invRatio * invRatio * invRatio + 1
end
function TweenFunc.easeInOut(ratio)
return TweenFunc.easeCombined(TweenFunc.easeIn, TweenFunc.easeOut, ratio)
end
function TweenFunc.easeOutIn(ratio)
return TweenFunc.easeCombined(TweenFunc.easeOut, TweenFunc.easeIn, ratio)
end
function TweenFunc.easeInBack(ratio)
local s = 1.70158
return ratio * ratio * ((s + 1.0)*ratio - s)
end
function TweenFunc.easeOutBack(ratio)
local invRatio = ratio - 1.0
local s = 1.70158
return invRatio * invRatio * ((s + 1.0)*invRatio + s) + 1.0
end
function TweenFunc.easeInOutBack(ratio)
return TweenFunc.easeCombined(TweenFunc.easeInBack, TweenFunc.easeOutBack, ratio)
end
function TweenFunc.easeOutInBack(ratio)
return TweenFunc.easeCombined(TweenFunc.easeOutBack, TweenFunc.easeInBack, ratio)
end
function TweenFunc.easeInElastic(ratio)
if ratio == 0 or ratio == 1 then
return ratio
else
local p = 0.3
local s = p/4.0
local invRatio = ratio - 1
return -1.0 * math.pow(2.0, 10.0*invRatio) * math.sin((invRatio-s)*(2.0*math.pi)/p)
end
end
function TweenFunc.easeOutElastic(ratio)
if ratio == 0 or ratio == 1 then
return ratio
else
local p = 0.3
local s = p/4.0
return math.pow(2.0, -10.0*ratio) * math.sin((ratio-s)*(2.0*math.pi)/p) + 1
end
end
function TweenFunc.easeInOutElastic(ratio)
return TweenFunc.easeCombined(TweenFunc.easeInElastic, TweenFunc.easeOutElastic, ratio)
end
function TweenFunc.easeOutInElastic(ratio)
return TweenFunc.easeCombined(TweenFunc.easeOutElastic, TweenFunc.easeInElastic, ratio)
end
function TweenFunc.easeInBounce(ratio)
return 1.0 - TweenFunc.easeOutBounce(1.0 - ratio)
end
function TweenFunc.easeOutBounce(ratio)
local s = 7.5625
local p = 2.75
local l = nil
if ratio < (1.0/p) then
l = s * math.pow(ratio, 2)
else
if ratio < (2.0/p) then
ratio = ratio - 1.5/p
l = s * math.pow(ratio, 2) + 0.75
else
if ratio < 2.5/p then
ratio = ratio - 2.25/p
l = s * math.pow(ratio, 2) + 0.9375
else
ratio = ratio - 2.625/p
l = s * math.pow(ratio, 2) + 0.984375
end
end
end
return l
end
function TweenFunc.easeInOutBounce(ratio)
return TweenFunc.easeCombined(TweenFunc.easeInBounce, TweenFunc.easeOutBounce, ratio)
end
function TweenFunc.easeOutInBounce(ratio)
return TweenFunc.easeCombined(TweenFunc.easeOutBounce, TweenFunc.easeInBounce, ratio)
end
function TweenFunc.easeInToOutBack(ratio)
return TweenFunc.easeCombined(TweenFunc.easeIn, TweenFunc.easeOutBack, ratio)
end
function TweenFunc.easeCombined(startFunc, endFunc, ratio)
if ratio < 0.5 then
return 0.5 * startFunc(ratio*2.0)
else
return 0.5 * endFunc((ratio-0.5)*2.0) + 0.5
end
end
function TweenFunc.pingPong(ratio)
if ratio < 0.5 then
return TweenFunc.linear(ratio * 2)
else
return TweenFunc.linear( 2 - ratio * 2 )
end
end
function TweenFunc.easeOutQuint(ratio)
local invRatio = ratio - 1.0
return invRatio * invRatio * invRatio * invRatio * invRatio + 1
end
function TweenFunc.easeInQuint(ratio)
return ratio * ratio * ratio * ratio
end
TweenFunc[TweenFunc.LINEAR] = TweenFunc.linear
TweenFunc[TweenFunc.EASE_IN] = TweenFunc.easeIn
TweenFunc[TweenFunc.EASE_OUT] = TweenFunc.easeOut
TweenFunc[TweenFunc.EASE_IN_OUT] = TweenFunc.easeInOut
TweenFunc[TweenFunc.EASE_OUT_IN] = TweenFunc.easeOutIn
TweenFunc[TweenFunc.EASE_IN_BACK] = TweenFunc.easeInBack
TweenFunc[TweenFunc.EASE_OUT_BACK] = TweenFunc.easeOutBack
TweenFunc[TweenFunc.EASE_IN_OUT_BACK] = TweenFunc.easeInOutBack
TweenFunc[TweenFunc.EASE_OUT_IN_BACK] = TweenFunc.easeOutInBack
TweenFunc[TweenFunc.EASE_IN_ELASTIC] = TweenFunc.easeInElastic
TweenFunc[TweenFunc.EASE_OUT_ELASTIC] = TweenFunc.easeOutElastic
TweenFunc[TweenFunc.EASE_IN_OUT_ELASTIC] = TweenFunc.easeInOutElastic
TweenFunc[TweenFunc.EASE_OUT_IN_ELASTIC] = TweenFunc.easeOutInElastic
TweenFunc[TweenFunc.EASE_IN_BOUNCE] = TweenFunc.easeInBounce
TweenFunc[TweenFunc.EASE_OUT_BOUNCE] = TweenFunc.easeOutBounce
TweenFunc[TweenFunc.EASE_IN_OUT_BOUNCE] = TweenFunc.easeInOutBounce
TweenFunc[TweenFunc.EASE_OUT_IN_BOUNCE] = TweenFunc.easeOutInBounce
TweenFunc[TweenFunc.EASE_IN_TO_OUT_BACK] = TweenFunc.easeInToOutBack
TweenFunc[TweenFunc.PINGPONG] = TweenFunc.pingPong
TweenFunc[TweenFunc.EASE_OUT_QUINT] = TweenFunc.easeOutQuint
TweenFunc[TweenFunc.EASE_IN_QUINT] = TweenFunc.easeInQuint