第10章JavaScript的动画.docx
《第10章JavaScript的动画.docx》由会员分享,可在线阅读,更多相关《第10章JavaScript的动画.docx(12页珍藏版)》请在第一文库网上搜索。
1、第10章JavaScript 的动画学前提历在 Web中,“动画”这个词一向都属于网页动画王者Flasho但并不是说 JaVaSCriPt就不能做出动画效果。虽然不借助于VML或者SVG, JaVaSCriPt就没 有处理矢量图形的能力,但是对页面元素的控制力却是FIaSh不可比拟的。通过对页面元素的控制,使用JaVaSCriPt同样可以创造出接近于Flash的动 画效果。本章就与读者一起,使用JaVaSCriPt来制作漂亮的动画效果。知识要,tr 动画基础 定时器 动画的实现 通用接口10.1 动画基础简单地说,动画可以理解为能动的图画。这确实很简单,简单到可以使用CSS技术轻 松地来实现,
2、在本章的例子中,将介绍一个使用IE滤镜效果实现的动画。动画效果的原理就是利用人的视觉暂留,通过快速地播放连续的画面而产生场景中物 体的运动效果。当然,连续的画面需要有连贯性一一比如一个完整的走路动作,按照规律 一次变化一点点,这样才能产生平滑的运动效果。目前最流行的动画制作工具Flash就是利用这个方式来进行动画制作的。这里涉及到两 个关键的概念一一帧和秒。帧可以理解为一幅画,或者电影胶片中的一张,每一帧都记录着一个瞬间的行为状态。 比如第一帧,人物准备抬起左手;第二帧,人物左手抬起到了半空;第三帧,人物左手伸 了出去。这三帧连续播放的效果就是一个完整的抬手伸出的动作。当然影响最终表现结果 的
3、还有一个重要因素,就是秒。通常,电影播放时,在一秒内会播放24幅画面。也就是说,人眼在一秒内看24帧就 会觉得很正常,如果在一秒内播放的帧数过少,或者过多,就会造成画面过快或者过慢的 效果了。当然这并不是绝对的,这与每帧之间的“间距”有关系,每帧移动的距离不同, 那么效果也不同。帧和秒决定了最后动画播出的效果,这个由帧/秒决定的单位被称为FPS,也就是帧每 秒(FramePerSeCond)。虽然对于看电影来说,24FPS就够了,但是,目前在游戏中经常以 高FPS为追求的目标,这是因为高FPS可以使整个过程表现得更细腻。10.2 定时器说到JaVaSCriPt动画,在本书第6章中就介绍过如何通
4、过改变元素样式来制作动画效果。 因为在JaVaSCriPt中只能控制元素进行改变,而不能创造矢量图形,当然这不包括VML或 者SVG。所以只能实现“元素动画”。提示在HTML 5中,JaVaSCriPt可以实现矢量绘图,但HTML 4.x中的元素动画同样重要。而实现元素动画只有两个要素,元素属性改变量以及完成改变量的时间,如图10.1所 示。以元素移动来说,图10.1描述了在指定时间内完成指定移动量的过程。现在有了时间, 也有了总量,问题是帧在哪里?这需要我们假定一个常量:FPS,如果使用24FPS,那么完 成这个动画的总帧数为:总帧数(FS) = FPS X总时间(S)新的问题是:如何在总时
5、间(S)内完成FS帧?对于JaVaSCriPt来说,这才是重点。答案是:我们需要一个定时器来周期性地驱动动画的改变,也就是帧的更新。(O, O)(1OO, 100)(200, 200)图101元素的移动10.3 .1 JaVaSCriPt 中的定时器在本书第5章中,介绍了两种JaVaSCriPt支持的定时器函数:SetTimeout ()/允许延时执行函数SetIntervalO/允许在指定的间隔时间后重复执行函数从函数定义上来看,setinterval更适合作为定时器来周期性的改变元素属性,看下面的 例子:block width: IOOpx;height: IOOpx;background
6、: #aaa;position: absolute;top: 100px;left: 100px;)/每秒帧数var FPS = 24;/每帧间隔var SPF = 1000/FPS;/总时间3秒var period = 3;/移动100像素var distance = 100;/总帧数var frames = parselnt(FPS * period);/每帧移动的距离var step = distance/frames;var block = ementByld(block);/定时器引用,用于结束动画var timer;/动画处理函数function callback () if(fr
7、ames = 0) /当总帧数到。时,停止动画 clearinterval(timer);/显示完成动画后的坐标 alert (tLeft + , : , + tTop);)/变更移动量.left = tLeft + step+,px,;.top = tTop + step + ,px,; frames-;) timer = setinterval(callback, SPF);定时器启动之后,灰色的方块MOCk就会沿着对角线的方向往右下角移动。虽然它很简 单地只进行了位置的变动,但它确实是一个动画。除了使用SetInterVal来实现周期定时器外,还可以使用SetTimeoUt来实现周期调度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 JavaScript 动画
