下面以一个完整的lua缓动函数
-- 最简单的线性变化,即匀速运动
function Linear(t,b,c,d)
return c*t/d + b;
end
--==========================================
-- 二次方缓动
Quad = {}
function Quad.easeIn(t,b,c,d)
t = t / d;
return c*(t)*t + b;
end
function Quad.easeOut(t,b,c,d)
t = t / d;
return -c *(t)*(t-2) + b;
end
function Quad.easeInOut(t,b,c,d)
t = t/(d * 0.5)
if ((t) < 1) then
return c/2*t*t + b;
end
t = t - 1;
return -c/2 * ((t)*(t-2) - 1) + b;
end
--==========================================
-- 三次方缓动
Cubic = {}
function Cubic.easeIn(t,b,c,d)
t = t / d
return c*(t)*t*t + b;
end
function Cubic.easeOut(t,b,c,d)
t = t/d - 1
return c*((t)*t*t + 1) + b;
end
function Cubic.easeInOut(t,b,c,d)
t = t / (d * 0.5)
if ((t) < 1) then
return c/2*t*t*t + b;
end
t = t - 2;
return c/2*((t)*t*t + 2) + b;
end
--==========================================
-- 四次方缓动
Quart = {}
function Quart.easeIn(t,b,c,d)
t = t / d
return c*(t)*t*t*t + b;
end
function Quart.easeOut(t,b,c,d)
t = t / d - 1
return -c * ((t)*t*t*t - 1) + b;
end
function Quart.easeInOut(t,b,c,d)
t = t / d * 0.5
if ((t) < 1) then
return c/2*t*t*t*t + b;
end
t = t - 2
return -c/2 * ((t)*t*t*t - 2) + b;
end
--==========================================
-- 五次方缓动
Quint = {};
function Quint.easeIn(t,b,c,d)
t = t / d
return c*(t)*t*t*t*t + b;
end
function Quint.easeOut(t,b,c,d)
t = t / d - 1
return c*((t)*t*t*t*t + 1) + b;
end
function Quint.easeInOut(t,b,c,d)
t = t / d * 0.5
if ((t) < 1) then
return c/2*t*t*t*t*t + b;
end
t = t - 2
return c/2*((t)*t*t*t*t + 2) + b;
end
--==========================================
-- 正弦曲线缓动
Sine = {};
function Sine.easeIn(t,b,c,d)
return -c * math.cos(t/d * (math.pi/2)) + c + b;
end
function Sine.easeOut(t,b,c,d)
return c * math.sin(t/d * (math.pi/2)) + b;
end
function Sine.easeInOut(t,b,c,d)
return -c/2 * (math.cos(math.pi*t/d) - 1) + b;
end
--==========================================
-- 指数曲线缓动
Expo = {}
function Expo.easeIn(t,b,c,d)
if (t == 0) then
return b;
else
return c * math.pow(2, 10 * (t/d - 1)) + b;
end
--return (t==0) ? b : c * math.pow(2, 10 * (t/d - 1)) + b;
end
function Expo.easeOut(t,b,c,d)
if (t == d) then
return b + c;
else
return c * (-math.pow(2, -10 * t/d) + 1) + b;
end
--return (t==d) ? b+c : c * (-math.pow(2, -10 * t/d) + 1) + b;
end
function Expo.easeInOut(t,b,c,d)
if (t == 0) then
return b;
end
if (t == d) then
return b+c;
end
t = t / d * 0.5;
if ((t) < 1) then
return c/2 * math.pow(2, 10 * (t - 1)) + b;
end
t = t - 1
return c/2 * (-math.pow(2, -10 * t) + 2) + b;
end
--==========================================
-- 圆形曲线缓动
Circ = {}
function Circ.easeIn(t,b,c,d)
t = t / d
return -c * (math.sqrt(1 - (t)*t) - 1) + b;
end
function Circ.easeOut(t,b,c,d)
t = t / d - 1
return c * math.sqrt(1 - (t)*t) + b;
end
function Circ.easeInOut(t,b,c,d)
t = t / d * 0.5
if ((t) < 1) then
return -c/2 * (math.sqrt(1 - t*t) - 1) + b;
end
t = t - 2
return c/2 * (math.sqrt(1 - (t)*t) + 1) + b;
end
--==========================================
-- 指数衰减的正弦曲线缓动
Elastic = {}
function Elastic.easeIn(t,b,c,d,a,p)
if (t==0) then
return b;
end
t = t / d
if ((t)==1) then
return b+c;
end
if (not p) then
p=d*.3;
end
if (not a or a < math.abs(c)) then
a=c;
local s=p/4;
else
local s = p/(2*math.pi) * math.asin (c/a);
end
t = t - 1
return -(a*math.pow(2,10*(t)) * math.sin((t*d-s)*(2*math.pi)/p )) + b;
end
function Elastic.easeOut(t,b,c,d,a,p)
if (t==0) then
return b;
end
t = t / d;
if ((t)==1) then
return b+c;
else
if (not p) then
p= d * 0.3;
end
end
if (not a or a < math.abs(c)) then
a=c;
local s=p/4;
else
local s = p/(2*math.pi) * math.asin (c/a);
end
return (a*math.pow(2,-10*t) * math.sin( (t*d-s)*(2*math.pi)/p ) + c + b);
end
function Elastic.easeInOut(t,b,c,d,a,p)
if (t==0) then
return b;
end
t = t / d * 0.5
if (t == 2) then
return b+c;
end
if (not p) then
p = d*(.3*1.5);
end
if (not a or a < math.abs(c)) then
a=c;
local s = p / 4;
else
local s = p/(2*math.pi) * math.asin (c/a);
end
if (t < 1) then
t = t - 1
return -.5*(a*math.pow(2,10*(t)) * math.sin( (t*d-s)*(2*math.pi)/p )) + b;
end
t = t - 1;
return a*math.pow(2,-10*(t)) * math.sin( (t*d-s)*(2*math.pi)/p )*.5 + c + b;
end
--==========================================
-- 返回
Back = {}
function Back.easeIn(t,b,c,d,s)
if (s == nil) then
s = 1.70158;
end
t = t / d
return c*(t)*t*((s+1)*t - s) + b;
end
function Back.easeOut(t,b,c,d,s)
if (s == nil) then
s = 1.70158;
end
t = t / d - 1
return c*((t)*t*((s+1)*t + s) + 1) + b;
end
function Back.easeInOut(t,b,c,d,s)
if (s == nil) then
s = 1.70158;
end
t = t / d * 0.5
if ((t) < 1) then
s = s * 1.525
return c/2*(t*t*(((s)+1)*t - s)) + b;
end
t = t - 2
s = s * 1.525
return c/2*((t)*t*(((s)+1)*t + s) + 2) + b;
end
--==========================================
-- 弹跳
Bounce = {}
function Bounce.easeIn(t,b,c,d)
return c - Bounce.easeOut(d-t, 0, c, d) + b;
end
function Bounce.easeOut(t,b,c,d)
t = t / d
if (t < (1/2.75)) then
return c*(7.5625*t*t) + b;
elseif (t < (2/2.75)) then
t = t - 1.5/2.75
return c*(7.5625*(t)*t + 0.75) + b;
elseif (t < (2.5/2.75)) then
t = t - 2.25/2.75
return c*(7.5625*(t)*t + 0.9375) + b;
else
t = t - 2.625/2.75
return c*(7.5625*(t)*t + 0.984375) + b;
end
end
function Bounce.easeInOut(t,b,c,d)
if (t < d/2) then
return Bounce.easeIn(t*2, 0, c, d) * 0.5 + b;
else
return Bounce.easeOut(t*2-d, 0, c, d) * 0.5 + c*0.5 + b;
end
end
-- @param vars {from:,to:,update:, ease:, complete:}
function ThatTween:ToValue(obj, duration, vars)
local tb = {obj = obj, duration = duration, from = vars["from"], to = vars["to"], vars = vars, time = 0}
if (vars["ease"] == nil) then
vars["ease"] = Linear;
end
table.insert(self.tweenlist, tb)
return tb;
end
function ThatTween:Update(timeStep)
local deltb = {};
for i,v in ipairs(self.tweenlist) do
v.time = v.time + timeStep;
local tend = v.time >= v.duration;
local func = v.vars["update"];
if (func ~= nil) then
local ease = v.vars["ease"];
local val = ease(v.time, 0, 1, v.duration);
if (tend) then
val = 1.0;
end
local tval = val;
if (v.from and v.to) then
tval = val * (v.to - v.from) + v.from;
end
--print(tval);
func(tval);
end
if (tend) then
table.insert(deltb, i);
local func = v.vars["complete"];
if (func ~= nil) then
func(v);
end
end
end
table.sort(deltb, function(a,b) return a > b; end);
for i, v in ipairs(deltb) do
table.remove(self.tweenlist, v);
end
end
这是一种可以创建多线程消息的函数使用方法:1,首先创建一个Handler对象Handler handler=new Handler(); 2,然后创建一个Runnable对象Runnable runnable=new Runnable(){ @Override public void run() {  ...
1、在models.py 中导入from django.contrib.auth.models import AbstractUser2、然后创建一个用户模型类,继承AbstractUserclass User(AbstractUser): class Meta: db_table = 'db_user' verbose_name = '用户' ...
为了让用户摆脱网线连接的限制,商家们真是瞅准了这一点,才开发出了笔记本,无线网卡,无线驱动等这些玩意,而人们常常会遇到笔记本电脑无法找到无线网络适配器的问题,但是很多的用户都是束手无策,这不,小编就给大家准备了解决笔记本找不到无线网络的方法。笔记本是许多人的办公工具和娱乐工具,相比于台式电脑, 笔记本电脑的外形美观、体积小巧、携带方便、使用方便,深受人们喜爱。当然使用的用户哪有不遇一些突发的情况,...
开始我还不知道腐竹是什么意思,后来听着听这,原来腐竹就是服主的谐音。Minecraft我的世界在国内已经有很多盒子了,只要安装好盒子就可以开房间,这样就可以和朋友连机,但是,但是如果你要做腐竹,改怎么办呢?在国内的话需要购买服务器,然后还要假设各种客户端,这一套弄下来不但劳神,而且还要Money,但是在国外,这种免费的服务是很多的,新手用来练手或者和朋友连机都可以。minecraft服务器在搜索里...
Spring Security 初识(五)–spring security 和jwt整合什么是 JWT json web token (JWT),是为了在网络环境中传递声明而设计的一种基于JSON的开放标准(RFC 7519),该token 被设计为紧凑且安全的.特别使用于分布式站点的登陆(SSO) 场景.JWT一般被用来在服务提供者和服务认证者之间传递身份信息,以便可以从服务器获取资
视频学习笔记 · 语雀https://www.yuque.com/gemaxianrenhm/hahwdw_1671465600
a/packages/apps/Camera/src/com/android/camera/CameraSettings.java+++ b/packages/apps/Camera/src/com/android/camera/[email protected]@ -420,7 +420,7 @@ public class CameraSettings { } ...
/*8位数码管显示 时间格式 05—50—00 标示05点50分00秒S1 用于小时加1操作S2 用于小时减1操作S3 用于分钟加1操作S4 用于分钟减1操作*/本文引用地址:http://www.eepw.com.cn/article/170901.htm#includereg52.h>sbit KEY1=P3^0; //定义端口参数sbit KEY2=P3^1;sbit KEY3=P3^...
chrome的tab页一旦关闭了再去翻历史记录重新打开实在麻烦,看到小众软件介绍onetab可以方便管理tab页,于是下载了试一下。在国内站点上下载了.crx文件离线安装,结果显示crx header invalid,搜索后尝试后解决方案如下:1、选择chrome-更多工具-扩展程序2、打开右上角的开发者模式,可以看到地址栏下面会出现三个按钮,第一个是“加载已解压的扩展程序”3、把下载的cr...
当把phpcms放入指定项目目录下等待安装,但是发现安装的第四步,文件权限设置文件的当前状态都是“不可写”,看到后自己很自觉的把文件权限改成了777 当然用的是递归修改的文件权限 (chmod 777 -R phpcms/)此处不建议全部改为777。一般情况下都会解决文件权限的问题,但是今天我这里出现了一个问题,就是没变化依旧是不可写。顿时蒙逼了,心想这也不需要重启服务啊。改完之后文件
一、前言 最近在做Vue+SpringBoot的项目,Vue使用了Element-UI,写几篇文章记录一下在开发过程中的小功能。 本篇讲的是使用多选框,实现全选功能。这个其实在官网上就有现成的例子,我拿来再做一个解释,避免下次使用的时候忘记。二、代码 template中的代码如下,在form表单中使用的全选功能。<el-form-item label="水果(Fruits)"> <el-checkbox :indeterminate="isI...
转载请标明出处:小帆的帆的专栏例子某大学一个系,总共100人,其中男90人,女10人,现在根据每个人的特征,预测性别Accuracy(准确率)Accuracy=预测正确的数量需要预测的总数 Accuracy = {预测正确的数量 \over 需要预测的总数} 计算由于我知道男生远多于女生,所以我完全无视特征,直接预测所有人都是男生 我预测所的人都是男生,而实际有90个男生,所以 预测正确的数量