zoukankan
html css js c++ java
WPF与缓动(三) 指数缓动
WPF与缓动(三) 指数缓动
周银辉
指数缓动给人的感觉是加速度很大.
它的原始公式来自:P(t) = Math.Pow(2, 10*(t-1));
与其他缓动一样,我在这里就直接给出其核心代码了:
//
指数缓动
protected
override
double
GetCurrentValueCore(
double
defaultOriginValue,
double
defaultDestinationValue, AnimationClock animationClock)
{
double
from
=
(
this
.From
==
null
?
defaultDestinationValue:(
double
)
this
.From);
double
to
=
(
this
.To
==
null
?
defaultOriginValue:(
double
)
this
.To);
double
delta
=
to
-
from;
double
value
=
animationClock.CurrentProgress.Value;
//
加速
//
return delta * Math.Pow(2, 10 * (value - 1)) + from;
//
减速
//
return delta * (-Math.Pow(2, -10 * value) + 1) + from;
//
先加速,后减速
double
t
=
value
*
this
.Duration.TimeSpan.Ticks;
double
d
=
this
.Duration.TimeSpan.Ticks;
if
((t
/=
(d
/
2
))
<
1
)
{
return
delta
/
2
*
Math.Pow(
2
,
10
*
(t
-
1
))
+
from;
}
return
delta
/
2
*
(
-
Math.Pow(
2
,
-
10
*
--
t)
+
2
)
+
from;
}
点击这里下载
源代码
查看全文
相关阅读:
emberjs初学记要
自我的一点介绍(七夕礼物)
JavaScript数据类型
Vue+Webpack项目配置
Git知识点整合
Log4j简单配置解析
如何明智地向程序员提问
Navicat连接mysql报错1251
多表查询sql语句
PLSQL面向对象
原文地址:https://www.cnblogs.com/zhouyinhui/p/758897.html
最新文章
模拟websocket推送消息服务mock工具二
使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock
electron快速开始
带你使用h5开发移动端小游戏
react实例之todo,做一个实时响应的列表操作
reactjs学习一(环境搭配react+es6+webpack热部署)
react native 学习一(环境搭配和常见错误的解决)
[js开源组件开发]html5标签audio的样式更改
[js开源组件开发]localStorage-cache本地存储的缓存管理
emberjs学习二(ember-data和localstorage_adapter)
热门文章
使用ruby搭建简易的http服务和sass环境
emberjs学习一(环境和第一个例子)
【2015上半年总结】js开源组件开发系列索引
Jest 前端单元测试工具
又到圣诞节,让你的网页下起雪(js特效)
js组件开发-移动端地区选择控件mobile-select-area
详解nodejs中使用socket的私聊和公聊的办法
[js开源组件开发]localStorage-cache本地存储的缓存管理
emberjs学习二(ember-data和localstorage_adapter)
使用ruby搭建简易的http服务和sass环境
Copyright © 2011-2022 走看看