canvas制作简单动画
在画布元素<canvas>中,除了绘制图形、图像、文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作:
1.自定义一个函数,用于图形的移动或其他动作。
2.使用setInterval方法设置动画执行的间隔时间,反复执行自定义函数。
下面通过实例介绍在<canvas>元素中制作简单动画的过程。
实例在画布中制作简单动画
1.功能描述
在页面中,新建一个<canvas>元素,在该画布元素中,绘制一个卡通头部图形,当页面加载时,该头部图形从画布的左边慢慢移至右边,又从右边移动至左边,最后,停止在开始移动时的位置。
2.实现代码
在Dreamweaver CS5中新建一个HTML页面7-16.html,加入代码如代码清单所示。
代码清单在画布中制作简单动画。
在实例中,页面导入一个Js文件js16.js,在该文件中,自定义多个函数,用于页面加载过程中,制作简单动画的调用。其实现的代码如代码清单所示:
3.页面效果
该页面在Chrome 10浏览器中执行的页面效果如图所示:
4.源码分析
在本实例的Js代码中,定义了四个自定义函数,其中函数pageload()用于页面加载时的调用,drawFace函数用于根据上下文环境对象,在画布中绘制卡通人脸;drawCirc函数用于根据传递的参数值,使用fill()与stroke()方法绘制指定位置、填充色、半径、弧度的圆形;moveFace函数用于实现往返移动圆形脸部的功能。
在drawFace函数中,四次调用drawCirc函数,分别绘制卡通人头部的头形、两只眼睛与笑脸;在moveFace函数中,先根据自增量intI的值,使用translate()方法向右移动卡通人头部,当intI值大于20时,转为获取intJ值,根据自减量intJ的值,使用translate()方法向左移动卡通人头部,直到intJ值小于0,便停止移动;在自定义函数pageload()中,通过setInterval()方法,按时反复执行moveFace函数,最终在画布中制作成简单的动画效果,详细实现过程见代码中加粗部分所示。
canvas制作简单动画的更多相关文章
- 使用Canvas制作时钟动画
复习Javascript到Canvas的知识点,看到一个使用Canvas绘制的静态时钟例子,便想将其变成动态显示系统时间的时钟动画.另外再配上数字显示的时钟,一个小的时钟模块的诞生了!目前的界面还比较 ...
- 用Canvas制作简单的画图工具
今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...
- 用Canvas制作loading动画
上一篇讲到用SVG制作loading动画,其中提到了线性渐变在扇形区域中的问题,并且用SVG SIML语法制作的loading动画并不是所有浏览器都兼容,所以现在用Canvas重新实现了一遍. 这里与 ...
- JavaScript动画基础:canvas绘制简单动画
动画是将静止的画面变为动态的艺术.实现由静止到动态,主要是靠人眼的视觉残留效应.视觉残留也叫视觉暂留现象,物体在快速运动时, 当人眼所看到的影像消失后,人眼仍能继续保留其影像0.1~0.4秒左右的图像 ...
- 学习HTML5, Canvas及简单动画的使用
通过在CSDN中的一些简单课程学习,跟随老师联系,做了如下的月亮,太阳和地球的运动效果.纪录在文章中,用于下次使用. 准备工作如下: 1. 使用三张背景图片 太阳 月亮 地球 2. 在HTML页面中定 ...
- 利用HTML5的canvas制作万花筒动画特效
<!DOCTYPE HTML> <html> <head> <style> #canvas{ background-color:#cccccc; } & ...
- 使用canvas制作简单表格
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- CAD制作简单动画
主要用到函数说明: IMxDrawEntity::Rotate 旋转一个对象.详细说明如下: 参数 说明 [in] IMxDrawPoint* basePoint 旋转基点 [in] DOUBLE d ...
- 利用canvas制作简单的logo
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
随机推荐
- OpenStack点滴03-Neutron
OpenStack Neutron是一个比较复杂的组件,如果说OpenStack安装部署过程哪一个组件最麻烦,那就肯定是网络组件Neutron了. 因为我对OpenStack网络这块也不是很熟,就把我 ...
- ModelSim仿真入门
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...
- 浅析Android中的消息机制
在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...
- DES加解密实现方式
private static readonly byte[] _keys = { 0x22, 0x84, 0x56, 0x98, 0x90, 0xAB, 0xpD, 0xEF }; private s ...
- 来一个可能防止恶意采集和爬虫的SH
没办法,公司的要求,还有,一些山寨爬虫完全不够我们运维人员的感觉, 一天爬虫搞个三四十万的LOG,那我只好干了.. 人家GOOGLE,BAIDU,一天大约也就五六千吧.. 有一个小的SSH技巧,是判断 ...
- 17 个 Linux 下用于 C/C++ 的最好的 IDE
C++,一个众所周知的 C 语言的扩展,是一个优秀的.强大的.通用编程语言,它能够提供现代化的.通用的编程功能,可以用于开发包括视频游戏.搜索引擎.其他计算机软件乃至操作系统等在内的各种大型应用. C ...
- CDN和双线机房相比有何优势
1.什么类型的网站最需要CDN? 适合目标客户覆盖全国范围的网站,不论是南方电信.还是北方网通用户.铁通用户,均要求能快速访问到客户网站,彻底解决电信.网通之间的互访瓶颈. 另外国外的网站,如果需要提 ...
- rsyslog imfile 模块说明
stop() { echo -n $"Shutting down system logger: " killproc -p "${PIDFILE}" -d 30 ...
- virtualbox端口转发
端口转发:setting->network->adapter:attached to NAT.port forwarding rules->name protocol ...
- Manor
Description Bob有n个正整数,他将这n个整数根据大小划分成两部分.对于小于等于k的整数放在集合A中,其余的放在集合B中.每次他从集合B中取出一个最大的值,将其变成0放入A集合中.然后将A ...