“时间如白驹过隙”不知道是谁发明了这句话,现在细细品味真是那么回事儿。那年我们还不知道什么是HTML更不知道什么是HTML5,但是大风车却给我们这些小朋友们增添了不少的乐趣,可爱的金龟子、稳重的董浩叔叔、漂亮的鞠萍姐姐。而如今再想去享受大风车给我们带来的乐趣,可称之为一种奢望。每天繁忙的工作夺去了我们曾经让我们欢笑的六点钟,回到家以后再也没有“大风车,吱呦吱呦转”的旋律,陪伴我们的永远是那一身的疲惫和那个一天面对面10个小时以上的电脑。大风车走了不要紧,我们还有HTML5;大风车走了不要紧,我们JavaScript。上午工作相对较少,见缝插针手痒就写了一个大风车,愿与各位同仁交流和学习。碎话少说,先看几张效果图:

图一

图二

图三

本小Demo是通过HTML5的Canvas简单的绘制了一个风车并且能够改变风车的转动速度和风车的型号,例子简单希望能够给将要接触HTML Canvas的程序员以参考和入门级例子。那么这个东西是怎么实现的呢?下面将代码粘出来与大家共同交流和学习,如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>那年我们一起看过的大风车</title>
<style type="text/css">
#box{ border:2px solid #f60; width:800px; height:600px; margin:0 auto;
}
</style>
<script type="text/javascript">var canvas,context;//画布、上下文var X,Y;//风车的圆心X坐标、Y坐标var canvasWidth,canvasHeight;//画布的宽高var speed = 1;//风车的转速、默认为1var R = 10;//风车的半径/***author:qingfeileedate:2012-03-21description:初始化页面函数*/function init(){initCanvas();initParams();draw();setInterval(draw,20);}/***author:qingfeileedate:2012-03-21description:初始化画布宽高、风车圆心坐标*/function initParams(){canvasWidth = canvas.width;canvasHeight = canvas.height;X = canvasWidth/2;Y = canvasHeight/4;}/***author:qingfeileedate:2012-03-21description:设置风的大小*/function setSpeed(speed){this.speed = speed;}/***author:qingfeileedate:2012-03-21description:设置风的大小*/function setR(R){this.R = R;}/***author:qingfeileedate:2012-03-21description:初始化画布*/function initCanvas(){try{canvas = document.getElementById("windmill");context = canvas.getContext("2d");}catch(e){document.getElementById("tip_info").innerHTML = "您的浏览器不支持!";}}/***author:qingfeileedate:2012-03-21description:绘制半圆*/function drawArc(tangle, style){context.beginPath();var trunkGradient = context.createLinearGradient(X, Y, X, Y+4*R);trunkGradient.addColorStop(0, style);trunkGradient.addColorStop(1, '#FFF00F');context.fillStyle = trunkGradient;context.arc(X - (2*R*Math.cos(tangle)), Y - 2*R*Math.sin(tangle), 2*R, tangle, Math.PI+tangle, true);context.closePath();context.fill();context.save();}/***author:qingfeileedate:2012-03-21description:绘制手把柄*/function drawHandle(){var trunkGradient = context.createLinearGradient(X, Y, X+10, Y);trunkGradient.addColorStop(0, '#663300');trunkGradient.addColorStop(0.4, '#996600');trunkGradient.addColorStop(1, '#552200');context.fillStyle = trunkGradient;context.fillRect(X, Y, 0.2*R, 8*R);}/***author:qingfeileedate:2012-03-21description:绘制文字*/function drawText(){context.font = "30px 宋体 bold";context.textAlign = 'center';context.fillText('那年我们一起看过的大风车', X, canvasWidth - 300, 300);}/***author:qingfeileedate:2012-03-21description:绘制函数*/var tangle = 0;function draw(){tangle = tangle + (speed*1/32)*Math.PI;context.clearRect(0,0,canvasWidth,canvasHeight);drawHandle();drawText();drawArc(tangle,"#552200");drawArc(tangle+1/2*Math.PI, "#990000");drawArc(tangle+Math.PI, "#0033FF");drawArc(tangle+3/2*Math.PI, "#225500");document.getElementById("tip_info").innerHTML = "转动角度:"+parseInt(tangle)+"    当前的风速:"+speed;}window.addEventListener("load",init,true);
</script>
</head><body><div id="box"><canvas id = "windmill" style = "background-color:#001111" width = "800px" height = "600px"></canvas><div id = "tip_info"></div><div><button onClick="setSpeed(0)">停止</button><button onClick="setSpeed(0.1)">微风</button><button onClick="setSpeed(0.5)">小风</button><button onClick="setSpeed(1)">中风</button><button  onClick="setSpeed(2)">大风</button><button  onClick="setSpeed(4)">狂风</button>|<button onClick="setR(5)">小号</button><button onClick="setR(20)">中号</button><button onClick="setR(30)">大号</button><button onClick="setR(35)">超大号</button></div></div>
</body>
</html>

时间仓促,思路还有改进的空间,如果哪位高人还有好的实现方法还请指点,互相学习,共同进步,欢迎拍砖

本文乃原创Demo,转载请注明出处:http://blog.csdn.net/qingfeilee/article/details/7377462

O(∩_∩)O谢谢

可以在这里下载此Demo的html文件,附件路径:http://download.csdn.net/detail/qingfeilee/4162633

那些年,年我们一起看过的大风车——HTML5风车效果相关推荐

  1. php验证码图片看不清更换代码,php如何实现验证码看不清换一张的效果

    php实现验证码看不清换一张的方法:首先打开PHP代码文件:然后添加js代码"function changing(){document.getElementById('checkpic'). ...

  2. 熊猫看直播不能用html5,想去熊猫看直播的同学注意了:5款暴力游戏已禁播

    [PConline 资讯]作为国民老公王思聪老板最为出名的产业,熊猫TV至今已经跃升成为国内该行业数一数二直播平台.当然,相信大部分朋友跟小编类似,上直播平台多半是看游戏直播比较多,但是如果你想看的游 ...

  3. 无聊中?天天穿格格衫,来为你的网站画个网格线背景吧!小白也能看懂。(Html5 Canvas实现网格线背景)

    引入 有时候,你会觉得,为啥我做的网站那么丑,就算排版再漂亮也让人觉得是上个世纪的页面. 或许,你没有一个专业的页面设计师. 当然,我们可以做自己的设计师. 既然设计不出高大上的页面,那就从生活中找经 ...

  4. html5 游戏 动画设计,设计师必看的10个HTML5动画工具

    如果你想用令人难以置信的动画创建引人注目的网站的话,那么这里为设计师精心挑选了一些必备的HTML5动画工具.HTML5是设计师用来打造时尚网站的最流行的编程语言之一.在过去三年内,这种编程语言的使用人 ...

  5. 不错html5画布效果,可惜网站不需要。亲们,可以看一下~

    这个效果是在好个博客看到的,之前一直不留意,今天又发现一个博客也使用了这个效果,于是决定拿来研究研究,并制作成DEMO. 这个效果使用了HTML5的画布功能,结合复杂的JS实现了鼠标经过有划痕并且根据 ...

  6. 熊猫怎么用html5看直播,熊猫TV HTML5播放器自动网页全屏

    // ==UserScript== // @name 熊猫TV HTML5播放器自动网页全屏 // @name:zh-CN 熊猫TV HTML5播放器自动网页全屏 // @namespace pand ...

  7. HTML5垃圾桶效果,Html轻松使用拖拽实现垃圾桶,代码带注释,包你能看懂

    效果 参考教程: W3school: 菜鸟教程: 关键知识点: 在拖动目标上触发事件 (源元素): ondragstart - 用户开始拖动元素时触发 ondrag - 元素正在拖动时触发 ondra ...

  8. 手机看html网页内容重叠,html5手机端叠加图片触屏滑动查看特效

    特效描述:html5手机端 叠加图片 触屏滑动查看特效.html5手机叠加图片手指滑动查看 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 rutrum tellus a tempus ...

  9. tomcat和apache的结合   看最重要的   文档有点乱

    tomcat的安装 官网下载:tomcat 解压,mv /apache-tomcat-7.0.69 /usr/local/tomcat cp -pv  /usr/local/tomcat/bin/ca ...

最新文章

  1. Spark UDAF用户自定义聚合函数
  2. TCP/IP网络协议的通俗理解,socket,http,soap。
  3. python open方法下file模块_python 文件操作
  4. poj3273---Monthly Expense
  5. VB.NET 中的 As New 以及型別指定
  6. 对HashMap的思考及手写实现
  7. Sentinel流控规则简介_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0032
  8. java基础----集合操作---实例----List集合的初始化
  9. 听听周报-谷歌发布首款真无线耳机 Pixel Buds|苹果发布全新头戴式耳机 Beats Solo Pro
  10. 《数据库原理》——知识点总结(期末复习)
  11. 【大数据技术详解】搭建redis集群服务的步骤和配置以及解决创建集群时会遇到的错误:NodeX replied with error:ERRInvalid node address specified
  12. uniapp表单验证手机号
  13. 淘宝中的UV,PV,IPV
  14. 我与我的专业计算机作文500字,我的学习生活作文500字(通用5篇)
  15. 结构变异SV的鉴定--smartie-sv与bayestyper
  16. 110配线架打法图解_110配线架打法图解 110配线架图片
  17. 表格提示html内容消失,如何解决Word里面的表格插入题注后页面上内容消失、无法编辑的问题...
  18. 开放平台支持的签名算法
  19. Memkind 例程1 调用memkind_malloc()分配内存
  20. Maven学习:项目构建生命周期

热门文章

  1. 高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed解决方案
  2. 网络直播平台是否需要《信息网络传播视听节目许可证》?
  3. W99、阿里大学征服路 - W系列总纲
  4. 三种算法求解最大公约数和最小公倍数
  5. 莫纳什大学计算机专业排名,澳大利亚大学计算机专业排名
  6. 从一个表格render方法问题看React函数组件的更新
  7. IAR中使用IELFTOOL进行软件代码checksum的生成和添加
  8. 神经网络的三种训练方法,神经网络训练过程详解
  9. 计算机开机的四个画面,教你修改电脑开机时“欢迎使用”四个字!
  10. c语言大学生自学网教学视频,6个质量最高的自学网站,悄悄的提成能力!