<script type="text/javascript">
var head=document.createElement("HEAD");
document.documentElement.appendChild(head);
var title=document.createElement("TITLE");
head.appendChild(title);
var text=document.createTextNode("HTML5 Canvas Demo");
title.appendChild(text);
var b = document.createElement("BODY");
document.documentElement.appendChild(b);
var c=document.createElement("CANVAS");
var node=document.createTextNode("your browser does not support the canvas tag");
var img=document.createElement("IMG");
c.appendChild(node);
b.appendChild(c);
c.id="myCanvas";
c.width="600";
c.height="600";
c.style.border="3px solid #FF0000";
var FPS = 1000;
var FRAME_MSEC = 1000 / FPS >> 0;
var center_X = 300;
var center_Y = 300;
var max = 300; var $ = c.getContext("2d"); c.onmousedown = function(e){
b.appendChild(img);
var url = c.toDataURL();
img.src=url;
}
var n = 0;
setInterval(intervalHandler, FRAME_MSEC);
function intervalHandler() {
$.clearRect(0, 0, 600, 600);
var prevX = center_X;
var prevY = center_Y;
for (var i = 0; i < max; i++) {
$.beginPath();
$.lineWidth = 1;
$.strokeStyle = getColorHSV(i / max * 360 + n * 4000);
$.moveTo(prevX, prevY);
$.lineTo(
prevX = center_X + (i * Math.cos(i + (i * n))), //prevX, prevY values will change structures
prevY = center_Y + (i * Math.sin(i + (i * n))));
$.stroke();
}
n += .00025; //spin & transform speed control }
function getColorHSV(h) { //color scheme.
var ht = (((h %= 360) < 0) ? h + 360 : h) / 60;
var hi = Math.floor(ht);
var r, g, b;
var m = Math.round; switch (hi) {
case 0:
r = 0xff;
g = m(0xff * (ht - hi));
b = 0;
break;
case 1:
g = 0xff;
r = m(0xff * (1 - (ht - hi)));
b = 0;
break;
case 2:
g = 0xff;
b = m(0xff * (ht - hi));
r = 0;
break;
case 3:
b = 0xff;
g = m(0xff * (1 - (ht - hi)));
r = 0;
break;
case 4:
b = 0xff;
r = m(0xff * (ht - hi));
g = 0;
break;
case 5:
r = 0xff;
b = m(0xff * (1 - (ht - hi)));
g = 0;
break;
}
return "rgb(" + r + ", " + g + ", " + b + ")"; }
</script>

直接保存为xx.html文件,双击用浏览器打开,结果为一个不断旋转的动态图,示例请点开链接

http://fb.xin3e.com/jsgraph/canvans.html

结果截图如下

已经过作者同意……

随机推荐

  1. 用脚本创建和恢复 DB2数据库

    CREATE DATABASE AUTOMATIC STORAGE YES ON 'C:\' DBPATH ON 'C:\' USING CODESET GBK TERRITORY CN COLLAT ...

  2. PowerDesigner生成sql及HTML格式数据库文档

    一.PowerDesigner生成sql问题 生成sql的方法是 Database -->Generate Database (Ctrl + G ) 但是提示 Could not load VB ...

  3. Installing MySQL Server on CentOS

    MySQL is an open-source relational database. For those unfamiliar with these terms, a database is wh ...

  4. 1-03 Sql Sever 的身份验证模式

    身份验证分为: 1:Windows身份验证. 1:Sql Sever身分验证. 每种验证的具体方式: 1Windows的验证方式 点击下拉框,有这两种验证方式,Windows验证只需要启动服务即可. ...

  5. myeclipse+tomcat 工程名改名的问题 ——————完美解决方案

    当建好的工程再重命名之后,发布和访问的时候都还是原来的名字,这个问题纠结了我很久,最好找到解决方法,这里分享一下,希望大家不要再受这种困惑.解决方法: 点击工程右键->properties-&g ...

  6. (译)【Unity教程】使用Unity开发Windows Phone上的横版跑酷游戏

    译者注: 目前移动设备的跨平台游戏开发引擎基本都是采用Cocos2d-x或者Unity.一般而言2d用cocos2d-x 3d用unity,但是对于Windows Phone开发者, cocos2d- ...

  7. 无法启动程序 ”*.lib”

    解决办法: 把含有入口函数(main函数)的 工程 如 cpp-test 设置为启动项 具体操作: 选中 cpp-test 工程 右击 —> 设为启动项目

  8. EL表达式详解及应用实例

    1. EL是JSP内置的表达式语言! * jsp2.0开始,不让再使用java脚本,而是使用el表达式和动态标签来替代java脚本! * EL替代的是<%= ... %>,也就是说,EL只 ...

  9. OAuth2.0 在 SSO中的应用~

    关于OAuth2.0的介绍,请看下面链接(讲的挺好的): http://blog.csdn.net/seccloud/article/details/8192707 我的理解: 一共四个角色,A:Cl ...

  10. HTTP基础10--web(2)

    因输出值转义不完全引发的安全漏洞 实施 Web 应用的安全对策可大致分为以下两部分. 客户端的验证 Web 应用端(服务器端)的验证: 输入值验证 / 输出值转义 客户端允许篡改数据或关闭 JavaS ...