从头开始的Javascript动画
Javascript Animation From Scratch
首先:是的,我知道我想重新发明轮子。但这不是重点。我是Javascript的新手(我在学校接受过一些基本培训),我想了解的不仅仅是复制和粘贴用Javascript制作的动画。我希望能够输入某些参数以使我的网页看起来更好。
所以这是我的问题(这可能是非常愚蠢的问题,但无论如何)。我找到了这个Javascript动画教程:http://javascript.info/tutorial/animation#the-basics-of-the-animation
这正是我想要的,除了它写得很差(在我看来(我是一个完美主义者)),并且不时有点难以理解。所以我真正没有得到的是第 7 行和第 8 行(粗体):
function animate(opts) {
var start = new Date
var id = setInterval(function () {
var timePassed = new Date - start
var progress = timePassed / opts.duration
if (progress > 1) progress = 1
var delta = opts.delta(progress)
opts.step(delta)
if (progress == 1) {
clearInterval(id)
}
}, opts.delay || 10)
}
其他一切都是可以理解的。我也没有得到的是增量(我了解数学概念和东西),但我不明白如何使用它们(使用它们的正确方法)。
如果有人足够好心,可以更正此代码并解释我在以下代码的第 7 行中必须写的内容,如果我想拥有线性 Delta,我将不胜感激。我还想知道如何正确调用函数进行动画处理(在本例中为函数 move())。
function move(element, delta, duration) {
var to = 500
animate({
delay:10,
duration:duration || 1000, // 1 sec by default
delta:delta,
step:function (delta) {
element.style.left = to * delta + "px"
}
})
}
我看了一下教程,在我看来,delta 只是一个属性,用于跟踪动画在其运动中有多远。该数字将始终介于 0 和 1 之间,因此在动画开始时,element.style.left = 0px,最后等于 500px。 根据您的输入,该值可以设置为线性或指数(具有缓动)。
您的代码现在不起作用吗? 或者您只是想知道增量是什么?
function move(element, delta, duration) {
var to = 500
animate({
delay: 10,
duration: duration || 1000, // 1 sec by default
delta: delta,
step: function(delta) {
element.style.left = 100*delta + "px"
}
})
}
在您提到的页面上的增量部分,有以下映射:
- 进度 = 0
- ->高度 = 0%
- 进度 = 0.2 ->高度 = 20%
- 进度 = 0.5 ->高度 = 50%
- 进度 = 0.8 ->高度 = 80%
- 进度 = 1 ->高度 = 100%
他们将增量定义为:
delta(progress)是将时间进度"进度"映射到 动画进度"三角洲"。
这意味着线性增量应该是一个遵循这些规则的函数:
- 增量(0) -> "0%"
- 增量(0.2) -> "20%"
- 增量(0.4) -> "50%"
- 增量(0.8) -> "80%"
- 增量(1) -> "100%"
在您的示例中,这是由以下行定义的:"delta:delta"。
step 函数将此增量应用于代码。在这种情况下,您可以使用:
element.style.left = to*delta + "px"
增量为 0 表示该属性将为"0px"。增量为 1 表示该属性将为"500px"。进度为 0 表示动画开始,进度 1 表示动画结束。在此示例中,增量等于进度。在动画的中间,进度为 50%。由于 delta(0.5) = 0.5,传递给 step 的参数将为 0.5,属性将为 "250px"。
我建议您使用上可用的开发人员控制台来测试应用于元素的属性的值。
- 如何使用css动画/javascript使具有背景图像的元素出现
- 一个动画javascript中包含多个图像
- 循环动画javascript,SetInterval只工作一次
- 关闭时如何制作动画?[Javascript]
- 增强动画(JavaScript+CSS)
- 没有jQuery的动画javascript
- 删除所有可拖动元素时显示按钮/播放消息.Adobe Edge动画Javascript/Jquery
- 将元素从后到前动画javascript
- 动画javascript scrollLeft使用XUI
- 如何通过堆叠图像动画Javascript
- 如何编辑URL名称,同时动画JavaScript锚滚动
- 动画Javascript显示/隐藏按钮两次
- 动画Javascript显示/隐藏按钮
- 动画javascript框架
- 谷歌I'm感觉幸运按钮动画javascript
- 我如何保持我的调整大小动画(javascript)不会弄乱我的(css)"浮动“;布局
- 调整图像大小时需要更平滑的动画javascript
- CSS 动画 + Javascript 回调
- Canvas动画javascript函数和全局变量
- 动画计数器没有动画- Javascript