Javascript 动画初探(实现)
作者:mingcheng 来源:gracecode.com 发布时间:2009-02-06 15:56:00
说完了理论,我们来做点实事。这篇文章将介绍使用 Javascript 实现的动画组件。
下面记录下当时编写这个组件的考虑的些问题,对技术细节感兴趣的朋友,可以到这里参看源代码:
需要几个回调函数控制初始化、动画运行时、动画完成的情况
将动画精确到运行了几帧
使用 setInterval 还是 setTimeout,最后还是选择了 setInterval(详细)
不管元素需要更改那些属性,提供相应公式即可,但这可能带来性能问题
要可扩展、而且稳定
这个动画组件的用法简要的说明下,首先我们要确定元素从哪里移动(begin)到哪里(final),我们可以将两个信息绑定到一起,比如
var position = {from: 0, to: 100};
然后实例化个动画组件,指定动画的运行时长(duration)以及动画运行类型(tween)
var motion = new Motion(duration, tween);
另外,我们当然希望在动画初始化、开始以及进行和结束时候做额外的事情,那么加入相应 的回调:
// 初始化motion.onInit = function() { // ...};// 开始motion.onStart = function() { // ...};// 动画运行时motion.onTweening = function() { // 需要获取某个时间点的坐标时,可以使用 this.equation 方法 var p = this.equation(position.from, position.to);};// 动画完成时motion.onComplete = function() { // ...};
当一切准备就绪,那么就可以开始动画了
motion.start();
当然,任何时候我们都希望能停止动画,那么就
motion.stop();
那么我们就可以通过这个动画组件完成常见的动画效果了。这里有个 DEMO,看下这个动画组件的实际使用例子。按照传统,代码可以在这里打包下载(中国as之家友情提示:.7z压缩文件,电脑安装7z软件后可以解压)。
附,参考资源:YUI 的动画组件、mootools 的动画组件 。
-- 未完待续 --


猜你喜欢
- 本文实例为大家分享了python opencv摄像头应用的具体代码,供大家参考,具体内容如下1、安装下载安装包pip install ope
- 在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况,此时通过配置文件定义全局变量是一个比较好的选择。首先配
- 在进行数据分析的时候,会把把一些具有多个特征的样本数据进行拼接合并吗,放在一起分析,预测....下面是用numpy中的函数进行数组的拼接。(
- 前几天玩了玩Google的Map API,感觉还不错,很简单。但凡有过任何编程经验的同学,看完以下的教程,都可以在10分钟内掌握它的主要功能
- 英文原文:http://www.smashingmagazine.com/2008/08/18/译文原文:http://blog.bingo
- 前言Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,而paramiko模块又依赖于pycrypt
- Python 是一种美丽的语言,它简单易用却非常强大。但你真的会用 Python 的所有功能吗?任何编程语言的高级特征通常都是通过大量的使用
- 几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下。为了简化这个转换过程,Python 3自带了一个叫做2
- 一直以来都对DOMDocument与 XMLHTTP 两者的区别不甚了解,今天用 eXeScope 查看了msxml6.dll 内
- frame标签有frameset、frame、iframe三种,frameset和其它普通标签没有区别,不会影响正常定位,而frame与if
- 如何完美的卸载掉Mysql?按以下几个步骤去执行。步骤一确认你的mysql服务是关闭的状态,不然卸载不干净。在我的电脑(计算机)-- 管理
- 一、三种数据文件的读取二、csv、tsv、txt 文件读取1)CSV文件读取:语法格式:pandas.read_csv(文件路径)CSV文件
- 前言之前写pandas和matplotlib的时候说到了想要出一期Pyechart系列数据可视化的文章。比起matplotlib,pyeac
- 我最近花了一些时间在探索CPython,并且我想要在这里分享我的一些冒险经历。Allison Kaptur的excellent guide
- 发送端可以不停的发送新文件,接收端可以不停的接收新文件。例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_vis
- 一、功能目标用户输入一个类似 1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568
- 一. 介绍一个计数器工具提供快速和方便的计数,Counter是一个dict的子类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一
- 首先说明下范围用Javascript来开发WEB页面的动画效果该思路同时考虑页面效率、SEO,如果数据大,也可以缓解后端压力。这个是程序设计
- 网上搜索出来的结果多是下面答案:MySQL中,如何查询两个日期之间的记录,日期所在字段的类型为datetime(0000-00-00 00:
- MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。 日期类型 &nbs