zoukankan      html  css  js  c++  java
  • canvas绘画交叉波浪

    做个记录,自己写的动态效果,可能以后用的着呢;

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                #canvas{
                    margin: 0 auto;
                    border: 1px solid #f98974;
                    /*background: cornflowerblue;*/
                }
            </style>
        </head>
        <body>
            <canvas id="canvas" width="500" height="200"></canvas>
            <script type="text/javascript">
                var canvas = document.getElementById("canvas");
                var ctx = canvas.getContext("2d");
                var speed = 0; wave = 20; level = Math.PI/200; wave2 = 20;
                ctx.translate(0,100);
                ctx.lineWidth = 3;
                function drawSin(speed,wave){ 
                    ctx.beginPath();
                    var gradient=ctx.createLinearGradient(0,0,500,0);
                    gradient.addColorStop("0","magenta");
                    gradient.addColorStop("0.9","skyblue"); 
                    ctx.strokeStyle = "rgba(51,133,254,.7)"; 
                    ctx.fillStyle = "rgba(237,107,3,.8)"; 
                    ctx.moveTo(0,100); 
                    for (var x=0; x<500; x++) {
                        var y = Math.sin(x*level+speed*2)*wave;
                        ctx.lineTo(x,y);
                    }
                    ctx.lineTo(500,100) 
    //                ctx.stroke();
                    ctx.fill();
                };
                function drawSin2(speed,wave){ 
                    ctx.beginPath();
                    ctx.strokeStyle = "yellow";
                    ctx.fillStyle = "yellow"; 
                    for (var x=0; x<500; x++) {
                        var y = Math.sin(x*level+speed+Math.PI/3)*wave;
                        ctx.lineTo(x,y);
                    } 
                    ctx.stroke();
                    ctx.fill();
                };
                function drawSin3(speed,wave){ 
                    ctx.beginPath();
                    ctx.strokeStyle = "aliceblue";
                    ctx.fillStyle = "rgba(237,107,3,.5)";
                    ctx.moveTo(0,100);
                    for (var x=0; x<500; x++) {
                        var y = Math.sin(x*level+speed*2+Math.PI/2)*wave2;
                        ctx.lineTo(x,y);
                    }
                    ctx.lineTo(500,100); 
    //                ctx.stroke();
                    ctx.fill();
                };
                setInterval(function(){
                    speed++;  
                    console.log(wave); 
                    ctx.clearRect(0,-100,500,200); 
                    drawSin(speed,wave);
    //                drawSin2(speed,wave);
                    drawSin3(speed,wave);
                },200); 
            </script>
        </body>
    </html>

  • 相关阅读:
    AFNetworking 3.0迁移指南
    富文本常用封装(NSAttributedString浅析)
    如何在 Objective-C 的环境下实现 defer
    iOS之深入了解控制器View的加载
    10+年程序员总结的20+条经验教训
    Foundation: NSNotificationCenter
    做一款仿映客的直播App?看我就够了
    AFNetworking源码分析
    WWDC2016 Session笔记 – Xcode 8 Auto Layout新特性
    iOS页面间传值的一些方式总结
  • 原文地址:https://www.cnblogs.com/sheqiuluo/p/9512341.html
Copyright © 2011-2022 走看看