学习HTML5, Canvas及简单动画的使用

通过在CSDN中的一些简单课程学习,跟随老师联系,做了如下的月亮,太阳和地球的运动效果。纪录在文章中,用于下次使用。

准备工作如下:

1. 使用三张背景图片

太阳 月亮 地球

2. 在HTML页面中定义一个CANVAS

1 <body>
2     <div style="background-color:green;text-align:center ;">
3         <canvas id="c" style="background-color:red;" width="300" height="300"></canvas>
4     </div>
5 </body>

3. 编写JS代码,使用canvas的API接口。 如 :translate, drawImage 和arc 等方法

 1   <script type="text/javascript">
 2
 3         var sun = new Image(),
 4             moon = new Image(),
 5             earth = new Image();
 6
 7         function init() {
 8             sun.src = "html5image/sun.png";
 9             moon.src = "html5image/moon.png";
10             earth.src = "html5image/earth.png";
11
12             window.requestAnimationFrame(draw);
13         }
14
15         function draw() {
16             var c = document.getElementById("c");
17             var ctx = c.getContext("2d");
18
19             ctx.globalCompositeOperation = "destination-over";
20             ctx.clearRect(0, 0, 300, 300);
21             ctx.fillStyle = "rgba(0,0,0,4)";
22             ctx.strokeStyle = "rgba(0,153,255,0.4)";
23             ctx.save();// save current status
24
25             ctx.translate(150, 150);
26
27             //earth
28             var time = new Date();
29             ctx.rotate((2 * Math.PI / 60) * time.getSeconds() + (2 * Math.PI / 60000) * time.getMilliseconds());
30             ctx.translate(105, 0);
31             ctx.drawImage(earth, -12, -12);
32
33             //moon
34             ctx.save();
35             ctx.rotate((2 * Math.PI / 6) * time.getSeconds() + (2 * Math.PI / 6000) * time.getMilliseconds());
36             ctx.translate(0, -28.5);
37             ctx.drawImage(moon, -3.5, -3.5);
38             ctx.restore(); //back to moon save
39
40             //the moving path
41             ctx.restore(); //back to the begin to draw earth
42             ctx.beginPath();
43             ctx.arc(150, 150, 105, 0, Math.PI * 2, false);
44             ctx.stroke();
45
46             //sun
47             ctx.drawImage(sun, 0, 0, 300, 300);
48
49             //exec an animation use the frame and the action is draw.
50             window.requestAnimationFrame(draw);
51         }
52
53         init();
54     </script>

如果需要知道更详细的步骤,请参考: http://edu.csdn.net/course/detail/1488

最后附上效果图:

thanks

时间: 2024-08-05 22:21:06

学习HTML5, Canvas及简单动画的使用的相关文章

学习笔记:HTML5 Canvas绘制简单图形

HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" width="1024" style="border:1px solid #aaa;text-align:center;"> 你的浏览器不支持Canvas,请更新浏览器再试!!! </canvas> 在canvas标签之间应该做浏览器是否支持的检测,

【猪猪-前端】微信打飞机高质量Demo,学习HTML5+Canvas技术编写,下载即可使用,注释齐全。

原文:[猪猪-前端]微信打飞机高质量Demo,学习HTML5+Canvas技术编写,下载即可使用,注释齐全. 源代码下载地址:http://www.zuidaima.com/share/1553027668610048.htm //获取绘图环境 02 var canvas=document.getElementById('canvas'); 03 var context=canvas.getContext('2d'); 04   05   06 //创建对象集合 (集合所有精灵) 07 var 

学习HTML5 canvas遇到的问题

学习HTML5 canvas遇到的问题 1. 非零环绕原则(nonzZero rule) 非零环绕原则是canvas在进行填充的时候是否要进行填充的判断依据. 在判断填充的区域拉一条线出来,拉到图形的外面,这条拉出来的线就是辅助线.判断绘制的线是否是从辅助线的左边穿过到辅助线的右边,此时这种穿过的方式记录为+1;如果是从辅助线的右边穿到辅助线的左边,就记做-1.最后将所有记录的数字进行求和,如果求和的结果为0,代表这块区域不要填充,否则,必须填充 上面的原理较难理解,可以这样理解,当在大矩形中绘

转载《学习HTML5 canvas遇到的问题》

学习HTML5 canvas遇到的问题 1. 非零环绕原则(nonzZero rule) 非零环绕原则是canvas在进行填充的时候是否要进行填充的判断依据. 在判断填充的区域拉一条线出来,拉到图形的外面,这条拉出来的线就是辅助线.判断绘制的线是否是从辅助线的左边穿过到辅助线的右边,此时这种穿过的方式记录为+1;如果是从辅助线的右边穿到辅助线的左边,就记做-1.最后将所有记录的数字进行求和,如果求和的结果为0,代表这块区域不要填充,否则,必须填充 上面的原理较难理解,可以这样理解,当在大矩形中绘

HTML5 Canvas火焰闪烁动画 火焰跟随鼠标

HTML5 Canvas火焰闪烁动画 火焰跟随鼠标 该款动画是基于Canvas,火焰上下窜动的效果非常逼真,而且火焰可以跟随鼠标移动,是一款非常酷炫的HTML5 Canvas动画. 下载地址:http://www.devstore.cn/code/info/262.html 运行截图: 版权声明:本文为博主原创文章,未经博主允许不得转载.

【转】HTML5 Canvas头发飘逸动画

原文:HTML5 Canvas头发飘逸动画 HTML5 Canvas动画非常炫酷,很多有创意的开发者可以利用HTML5的Canvas特性创造出很多不错的动画特效.今天我们要分享一款HTML5 Canvas头发飘逸动画,该动画模拟头发飘动的效果,加上可爱的人脸,可以说非常有技术含量,更富有创意. 点击图片演示: 源码下载

HTML5 Canvas水波纹动画特效

HTML5的Canvas特性非常实用,我们不仅可以在Canvas画布上绘制各种图形,也可以制作绚丽的动画,比如这次介绍的水波纹动画特效.以前我们也分享过一款基于HTML5 WebGL的水波荡漾动画,让人惊叹不已,这次分享的HTML5 Canvas水波纹动画同样非常震撼人心. 在线演示          源码下载 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&q

HTML5 canvas超简单和逼真的下雪特效

WebSnowjq.js是一款基于HTML5 canvas的超简单和逼真的下雪场景特效js插件.该下雪特效插件可以通过简单的参数设置了设定雪花的数量.每朵雪花的飘落速度各不相同,层次感非常强. 该下雪特效可以在所有支持HTML5特性的现代浏览器中最常工作: Internet Explorer 9.0+, Google Chrome 4.0+, Mozilla Firefox 2.0+, Safari 3.1+ . 效果演示:http://www.htmleaf.com/Demo/20150406

Html5 Canvas一个简单的画笔例子

相比了下Qt quick的canvas和HTML5的canvas,发现HTML5 Canvas在同样绘制绘制操作下性能比Qt的canvas强很多,附上一个HTML5 canvas画笔一例子 var DW = function( canvasid){ this._points = []; this._canvas = document.getElementById( canvasid ); this._ctx = this._canvas.getContext("2d"); this._