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 ...
随机推荐
- Java学习笔记--堆、栈、常量池
参考资料:http://blog.csdn.net/miraclestar/article/details/6039743 Java内存区域模型主要分为4部分 1.方法区 2.本地方法栈 3.栈 4. ...
- ioctl函数,可以获取ip地址,修改ip地址,网卡地址等
部分转自http://www.cnblogs.com/zht-blog/p/4025903.html #include <sys/types.h>#include <sys/sock ...
- Oracle merge into 使用记录
符合条件进行更新操作,不符合则进行插入操作. merge into myd_nsrdt n using ('as nsrsbh,'' as nsrmc, ' as nowphone,sysdate a ...
- Android 检查是否安装SD卡
/** * 检查是否安装SD卡 * @return */ public static boolean checkSaveLocationExists() { String sDCardStatus = ...
- Qt入门(4)——Qt常见控件
Qt提供了大量的内建控件及通用对话框可满足程序员的绝大部分要求.我们将对这些控件和对话框作一个大概的介绍. 1. QLabel 定义 QLabel* m_labelOrdered = newQLabe ...
- android调用系统自带的的浏览器搜索关键字
//调用系统的浏览器搜索详情 public void jumpBrowser(String value) { /* 取得网页搜寻的intent */ Intent search = new Inten ...
- ACM2055_ctype.h_cctype
#include<iostream> int main() { using namespace std; int y,count; char x; cin>>count; wh ...
- C++ deepin
访问类成员函数(cin.getline())方式是从访问结构成员变量方式衍生而来; C++结构体变量申明 struct关键字可省略; c++结构体变量声明初始化, = 可省略;但此需用在c++,大家都 ...
- ik分词
Ik中文分词的引入 ik版本号:IK Analyzer 2012FF_hf1 下载地址: http://code.google.com/p/ik-analyzer/downloads/list 解压 ...
- JS(二)
对象里面的属性和方法比较多啊,不容易记住,需要多实践: 1.将一串字符串的顺序颠倒,并实现首尾字母大写的两种方法: <!DOCTYPE html> <html lang=" ...