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波浪效果的实现代码的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

如何用html5中的canvas绘制渐变矩形

javascript可以获取input的值吗

html5 form新增的属性

javascript中如何使用spread运算符(...)?8种方法介绍

怎样开发优秀的html5游戏-迪斯尼《寻找奥兹之路》游戏技术详解(二)

d3js是什么

javascript怎么强制转换成整型

javascript中如何判断函数、变量是否存在

h5的块级标签汇总

javascript中如何将url转换成汉字

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




打赏

取消

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

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

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

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

评论

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