canvas波浪效果的实现代码


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于canvas波浪效果的实现代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

基于canvas的三次贝塞尔曲线(bezierCurveTo)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

<canvas id="myCanvas"></canvas>

 

<script>

    var WAVE_HEIGHT = 200 //波浪变化高度

    var SCALE = 0.5 // 绘制速率

    var CYCLE = 360 / SCALE

    var TIME = 0

 

    function initCanvas() {

        var c = document.getElementById("myCanvas")

        var width = window.screen.width

        var height = window.screen.height

 

        var ctx = c.getContext("2d")

        c.width = width

        c.height = height

 

        // start

        window.requestAnimationFrame(function() {

            draw(ctx, width, height)

        })

    }

 

    function draw(ctx, width, height) {

        ctx.clearRect(0, 0, width, height)

 

        TIME = (TIME + 1) % CYCLE

        var angle = SCALE * TIME // 当前正弦角度

        var dAngle = 60 // 两个波峰相差的角度

 

        ctx.beginPath()

        ctx.moveTo(0, height * 0.5 + distance(WAVE_HEIGHT, angle, 0))

        ctx.bezierCurveTo(

            width * 0.4,

            height * 0.5 + distance(WAVE_HEIGHT, angle, dAngle),

            width * 0.6,

            height * 0.5 + distance(WAVE_HEIGHT, angle, 2 * dAngle),

            width,

            height * 0.5 + distance(WAVE_HEIGHT, angle, 3 * dAngle)

        )

        ctx.strokeStyle = "#ff0000"

        ctx.stroke()

 

        ctx.beginPath()

        ctx.moveTo(0, height * 0.5 + distance(WAVE_HEIGHT, angle, -30))

        ctx.bezierCurveTo(

            width * 0.3,

            height * 0.5 + distance(WAVE_HEIGHT, angle, dAngle - 30),

            width * 0.7,

            height * 0.5 + distance(WAVE_HEIGHT, angle, 2 * dAngle - 30),

            width,

            height * 0.5 + distance(WAVE_HEIGHT, angle, 3 * dAngle - 30)

        )

        ctx.strokeStyle = "#0000ff"

        ctx.stroke()

 

        function distance(height, currAngle, diffAngle) {

            return height * Math.cos((((currAngle - diffAngle) % 360) * Math.PI) / 180)

        }

 

        // animate

        window.requestAnimationFrame(function() {

            draw(ctx, width, height)

        })

    }

 

    initCanvas()

</script>

以上就是canvas波浪效果的实现代码的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

你知道原生html组件是什么吗?原生html组件的介绍

介绍javascript正则实现表达式以字母开头

使用canvas画“哆啦a梦”时钟的代码

javascript中的generator函数的用法介绍(附代码)

content-type几种值的区别及用法介绍

了解http事务、node模块化规范

javascript怎么设置div边框

html5 canvas中绘制字体与图片以及图形模糊问题解决

html5中的nav标签的详解

android使webview支持html5 video全屏播放的方法分享(图)

更多相关阅读请进入《canvas》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...