iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS使用canvas绘制旋转风车动画
  • 195
分享到

JS使用canvas绘制旋转风车动画

2024-04-02 19:04:59 195人浏览 八月长安
摘要

使用canvas绘制动画-旋转风车加速减速启动停止。 结果截图详见如下: 源码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

使用canvas绘制动画-旋转风车加速减速启动停止。

结果截图详见如下:

源码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>风车</title>
<style>
    div{
        text-align:center;
    }
</style>
</head>
 
<body>
    <div>
    <canvas id="windmill" height="300px" width="300px" style="border:1px solid #1D96E8"></canvas>
    <input type="button" value="start" title="开始" οnclick="startWindmill()" />
    <input type="button" value="stop"  title="停止" οnclick="stopWindmill()" />
    <input type="button" value="upSpeed"  title="加速" οnclick="upSpeed()" />
    <input type="button" value="downSpeed" title="减速" οnclick="downSpeed()" />
    </div>
</body>
<script>
    
    var internal = 0;//初始化间隔
    var internal_Max = 60; //最大间隔
    var rotation_angle = 360.0/internal_Max;//旋转角度
    var internal_time = 1000;//事件间隔(毫秒)
    drawWindmill();
    var timer = null;
    //开始风车
    function startWindmill(){
        //转动风车
        function rotateWindmill(){
            internal++;
            if(internal>internal_Max){
                internal=0;
            };
            drawWindmill();
            timer=setTimeout(rotateWindmill, internal_time);
        };
        rotateWindmill();
    };
    //停止风车
    function stopWindmill(){
        clearInterval(timer);
    };
    //加速风车
    function upSpeed(){
        internal_time*=0.8;
    };
    //减速风车
    function downSpeed(){
        internal_time*=1.5;
    };
    
    //绘制风车
    function drawWindmill(){
        var now = new Date();
        var canvas = document.getElementById('windmill');
        var ctx = canvas.getContext('2d');
        ctx.save();
        ctx.clearRect(0,0,300,300);
        //绘制椭圆底座
        ctx.beginPath();
        ctx.fillStyle = "black";
        var circle_x = canvas.width/2.0;
        var circle_y = canvas.height*3/4.0;
        var radiusX = canvas.height/4.0;
        var radiusY = radiusX/3.0;
        var rotation = 0;
        var startAngle = 0;
        var endAngle = Math.PI*2;
        var anticlockwise = false;
        ctx.ellipse(circle_x, circle_y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
        ctx.fill();
        
        //绘制旗杆
        ctx.beginPath();
        ctx.lineWidth = 6;
        ctx.lineCap = "round";
        var line_start_x =  circle_x;
        var line_start_y = circle_y;
        var line_end_x = line_start_x;
        var line_end_y = canvas.height/4.0;
        ctx.moveTo(line_start_x,line_start_y);
        ctx.lineTo(line_end_x,line_end_y);
        ctx.stroke();
        
        //绘制扇叶
        ctx.strokeStyle = "green";
        var sy_length = canvas.height/8.0;
        ctx.save();
        ctx.translate(line_end_x,line_end_y);
        ctx.rotate(internal*rotation_angle);
        for(var i = 1;i<=3;i++){
            ctx.rotate(Math.PI*2/3);
            ctx.beginPath();
            ctx.moveTo(0,0);
            ctx.lineTo(50,0);
            ctx.stroke();
        };
        
        ctx.restore();
        ctx.restore();
    };
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: JS使用canvas绘制旋转风车动画

本文链接: https://www.lsjlt.com/news/140301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS使用canvas绘制旋转风车动画
    使用canvas绘制动画-旋转风车加速减速启动停止。 结果截图详见如下: 源码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0...
    99+
    2024-04-02
  • HTML5中Canvas绘制旋转风车的方法
    小编给大家分享一下HTML5中Canvas绘制旋转风车的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!下图即是我们完成后的简单效果,心动不如行动,那么咱们就进...
    99+
    2023-06-09
  • 如何制作canvas粒子旋转动画
    这篇文章主要介绍了如何制作canvas粒子旋转动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  <!DOCTYPE&nb...
    99+
    2024-04-02
  • Android绘制旋转动画方法详解
    目录1、准备工作2、加速减速原理3、初始化4、开始5、加速6、减速7、停止8、项目源码Layout部分MainActivity部分1、准备工作 首先需要有一个用于旋转的图片 需要考虑...
    99+
    2024-04-02
  • Android绘制旋转动画方法是什么
    这期内容当中小编将会给大家带来有关Android绘制旋转动画方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、准备工作首先需要有一个用于旋转的图片需要考虑如何开始、结束、加速、减速2、加速减速原...
    99+
    2023-06-26
  • 使用Canvas怎么绘制一个旋转的太极
    今天就跟大家聊聊有关使用Canvas怎么绘制一个旋转的太极,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。cssbody{    backgro...
    99+
    2023-06-09
  • 使用canvas怎么绘制一个连线动画
    这篇文章将为大家详细讲解有关使用canvas怎么绘制一个连线动画,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。step1:绘制点首先创建个标签<canvas id="canv...
    99+
    2023-06-09
  • 使用Canvas怎么绘制一个下雨动画
    今天就跟大家聊聊有关使用Canvas怎么绘制一个下雨动画,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用方法如下:function anim() { ...
    99+
    2023-06-09
  • 使用canvas怎么绘制一个DVD待机动画
    本篇文章给大家分享的是有关使用canvas怎么绘制一个DVD待机动画,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 HTML<!DOCTYPE htm...
    99+
    2023-06-09
  • 如何使用CSS制作旋转动画的实现步骤
    如何使用CSS制作旋转动画的实现步骤在现代网页设计中,动画效果是非常重要和受欢迎的一个元素。其中,旋转动画可以给网页注入活力和吸引力。本文将介绍如何使用CSS制作旋转动画的具体步骤,并提供一些代码示例。步骤一:创建HTML结构首先,在HTM...
    99+
    2023-10-26
    CSS 制作 旋转动画
  • 使用Canvas怎么绘制一个贝赛尔曲线轨迹动画
    本篇文章为大家展示了使用Canvas怎么绘制一个贝赛尔曲线轨迹动画,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。二次贝赛尔曲线   function draw...
    99+
    2023-06-09
  • JS前端使用canvas动态绘制函数曲线示例详解
    目录前言第一步:绘制坐标系1、如何确定 x 轴和 y 轴的边界值2、不是传入多少网格数就是多少网格3、如何让坐标原点位于画布中心4、刻度总是会有浮点数第二步:画函数曲线第三步:绘制辅...
    99+
    2022-11-13
    JS canvas绘制函数曲线 JS canvas
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2024-04-02
  • 如何使用css3实现3d旋转动画特效
    这篇文章将为大家详细讲解有关如何使用css3实现3d旋转动画特效,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:<!doctype html><...
    99+
    2024-04-02
  • 怎么使用javascrip和HTML5 Canvas绘制转盘抽奖
    本文小编为大家详细介绍“怎么使用javascrip和HTML5 Canvas绘制转盘抽奖”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用javascrip和HTML5 Canvas绘制转盘抽奖”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-07-04
  • Android 使用cos和sin绘制复合曲线动画
    目录前言第一次分析第二次分析总结前言 前两周在开发新需求的时候,设计给了一份类似这样的动画: 看着不难,即使一遍看不懂,嘿嘿,不还有设计稿。 作为一个平时很少写动画的 Andr...
    99+
    2024-04-02
  • 怎么使用js+canvas实现可自动吸附闭合的鼠标绘制多边形
    这篇文章主要介绍“怎么使用js+canvas实现可自动吸附闭合的鼠标绘制多边形”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用js+canvas实现可自动吸附闭合的鼠标绘制多边形”文章能帮助大...
    99+
    2023-07-02
  • 如何使用Python matplotlib绘制xkcd动漫风格的图表
    这篇文章主要介绍如何使用Python matplotlib绘制xkcd动漫风格的图表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!XKCDxkcd是兰道尔&middot;门罗(Randall Mun...
    99+
    2023-06-29
  • 怎么在html5中使用canvas绘制文本自动换行
    怎么在html5中使用canvas绘制文本自动换行?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一个150*100的canvas画布,加个边框明显边界<canvas&nb...
    99+
    2023-06-09
  • 如何使用CSS3实现的科技球体旋转动画特效
    这篇文章主要为大家展示了“如何使用CSS3实现的科技球体旋转动画特效”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用CSS3实现的科技球体旋转动画特效”这...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作