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 ...
随机推荐
- php批量上传图片并把图片名放入数据库
前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...
- 成绩转换 AC 杭电
成绩转换 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- sublime 使用快捷记录
1.sublime 中有一个htmlprettify 插件 这个插件 可以用来格式化 html css js 使我们的代码看着比较美观 ctrl + shift + h 这个快捷方式是美化代码间距的 ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- 欧拉计划之Largest palindrome product
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2 ...
- 在QT程序中使用cout和cin
1先输入10个数字,再输出. #include <QtCore/QCoreApplication> #include <QtCore/QList> #include <Q ...
- Android 添加子视图(addView和setView)
我们在添加视图文件的时候有两种方式,一种是通过在xml文件定义layout,另一种方式是在java代码中动态生成布局文件. 在xml中定义的layout要想转化为view,需要使用到LayoutInf ...
- nfs:server 172.168.1.22 not responding,still trying问题解决方法 平台为RealARM 210平台
nfs:server 172.168.1.22 not responding,still trying问题解决方法 ,平台为RealARM 210平台. 这里的问题是在使用nfs挂载文件系统时遇到的, ...
- 8.2.1.7 Use of Index Extensions 使用索引扩展
8.2.1.7 Use of Index Extensions 使用索引扩展 InnoDB 自动扩展每个secondary index 通过添加primary key columns to it,考虑 ...
- Android中ListView通过BaseAdapter实现数据的绑定
1. public class ListFiles extends Activity { ListView Listview=null; protected void onCreate(Bundle ...