Javascript 动画初探(原理)

作者:mingcheng 来源:gracecode.com 时间:2009-02-06 15:53:00 

哲学上有种说法,“运动是绝对的,静止是相对的”。我们在编写各样的效果时,时常会碰到动画。下面的章,将讨论动画的原理以及实现。

动画,简而言之就是物体在某时间段内,不断的改变自身的属性。这些属性有可能是位置、大小等。为了方便说明,在这里统一认定为位置(position)。

那么,动画就有了两个基本的变量,时间和位置。用直角坐标系来表示,将 x 轴定为时间(time),将 y 轴定为位置(position),就可以得到这样的坐标系

从这个坐标系可以获得更多的信息,比如动画运行的时间段(x 轴的区间)、动画开始试物体的位置(begin)以及结束时的位置(final)。

然后,动画的基本关系可初步抽象出来。时间(duration)和位置(position)存在函数关系

position = f(time)

在这里同时引入 fps (帧率)这个概念。fps 简单的说,就是一秒钟内物体变化了几帧。它抽象成坐标中的元素,就是 x 轴的粒度。

fps 是个常量(比如通常电影的 fps 为 25,即每秒 25 帧),通过 fps 以及时间段(duration),则可以计算出这个时间段内物体位移了几帧(frames),公式如下

frames = (duration/1000)*fps

上述公式中,时间段(duration)以毫秒计算,即一毫秒等于一千分之一秒。

综合起来,我们要获得某个时间点的位置时,就可以利用 当前时间点(time)、时间段(duration、x 轴的区间),以及开始的坐标(begin)和结束的坐标(final)等因素来完成,那么可以将第一个的公式细化成

position = f(time, begin, final, duration)

同时,根据 fps 计算出的帧数,则可以得知某动画在这个时间段内运行了几次。而此函数产生的曲线,则可以说明在指定时间段内,物体的运动情况。如曲线比较抖,则说明物体运动比较快,反之则慢。

例如上述函数图的 45 度曲线,如果不考虑区间因素则可以写成

position = time

然后加上函数区间,则用函数表示

postion = final * time / duration + begin

那么就可以说明物体随着时间的改变,位置进行匀速递增的运行。

至此,元素的动画问题,这时就可以抽象成具体的数学问题。仅通过改变函数的公式,就可以改变物体动画的运行效果。

附,相关参考资源:

* :动画中文)、FPS/帧率中文

继续阅读:Javascript 动画初探(实现)

标签:动画,原理,运动,JavaScript
0
投稿

猜你喜欢

  • python定时关机小脚本

    2022-09-24 23:38:21
  • Mysql5.6启动内存占用过高解决方案

    2024-01-20 23:10:25
  • pandas值替换方法

    2021-05-31 20:22:38
  • 使用Python项目生成所有依赖包的清单方式

    2022-02-18 19:14:49
  • vue引入jq插件的实例讲解

    2024-04-30 10:23:11
  • 基于JS判断iframe是否加载成功的方法(多种浏览器)

    2023-08-24 04:14:52
  • python 统计代码耗时的几种方法分享

    2023-11-03 19:51:06
  • Python实现信息轰炸工具(再也不怕说不过别人了)

    2021-10-05 17:01:08
  • 在ASP.NET 2.0中操作数据之十六:概述插入、更新和删除数据

    2024-06-05 09:27:08
  • 浅谈vue项目,访问路径#号的问题

    2024-05-29 22:46:08
  • IDEA最新激活码永久激活教程附激活失败原因汇总

    2023-12-13 11:57:29
  • 基于鼠标点击跟踪的用户点击行为分析

    2008-04-24 19:22:00
  • python中shell执行知识点

    2022-11-30 08:41:15
  • Python3.6使用tesseract-ocr的正确方法

    2023-10-24 20:46:28
  • 利用Google Ajax Library API加速常用js类库的载入

    2008-06-17 17:44:00
  • python 从远程服务器下载东西的代码

    2023-01-23 11:00:55
  • python实现两个经纬度点之间的距离和方位角的方法

    2022-03-15 02:41:27
  • 微信跳一跳python自动代码解读1.0

    2022-11-30 05:31:49
  • python+opencv实现高斯平滑滤波

    2023-04-02 15:56:55
  • 解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

    2024-01-22 08:24:14
  • asp之家 网络编程 m.aspxhome.com