<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. IBM Rational AppScan 无法记录登录序列 分类: 数据安全 2015-03-18 16:46 158人阅读 评论(0) 收藏

    为了测试漏洞,我在本地部署了一个站点,为http://localhost/app,并且有登录页面. 但是尝试多次,都无法记录登录页面.此时尝试了在hosts文件中,自定义了一个域名 127.0.0.1 ...

  2. C语言中如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  3. pythonchallenge之C++学习篇-03

    提示说一个小写字母两面精确地被大写字母包围,应该指的是周围没有四个而仅仅这两个像这样的:xXXXxXXXx的中间的那个应该是符合条件的 好了标题是re,提示该是使用正则表达式,网页源码里有待处理的字符 ...

  4. selenium实战-自动退百度云共享群

    必备知识 在官网上下好selenium-3.0.1-py2.py3-none-any.whl,然后进入下载文件所在的位置 pip install selenium-3.0.1-py2.py3-none ...

  5. 遍历CallBack对象 和 HHIVE对象

    内核中有个PLIST_ENTRY CmpHiveListHead;CmpHiveListHead = &CMHIVE.HiveList; CMHIVE结构如下:kd> dt _CMHIV ...

  6. 使用postMesssage()实现跨域iframe页面间的信息传递----转载

    由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...

  7. 【转】使用jquery animate创建平滑滚动效果

    这篇文章主要介绍了使用jquery animate创建平滑滚动效果,效果可以滚动到顶部.到底部或页面中指定地方,生要的是非常平滑,很舒服,需要的朋友可以参考下 滚动到顶部: $('.scroll_to ...

  8. Callable接口、Runable接口、Future接口

    1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线 ...

  9. JVM性能监控工具-Jvisualvm

    用法:Jvisualvm是JDK自带的一款性能分析工具 使用方式: 1.配置好JDK环境变量 1.本地JVM监控略 2.远程JVM监控 用JMX对Resin内存状态进行监控 ,可以看到本地所有可监控的 ...

  10. LoadRunner如何监控Tomcat性能

    使用LoadRunner做性能测试,一般的直觉是LR只能完成脚本录制和编写模拟用户的请求行为,但是在某些情况下,要监控一些中间件或web服务器的性能时,就不能通过录制脚本来完成了,那么就需要手工来编写 ...