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

相关阅读 >>

javascript是不是解释型语言

javascript中数组去重的5种方法是什么

css中文字相关属性的介绍

javascript字符串怎么替换字符

用h5做出微信的支付过程的实现步骤

关于javascript监听组合按键

让web app更快的html5最佳实践

html5布局之路怎么样

如何创建一个javascript数组

用javascript获取图片的真实尺寸大小的方法详解

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




打赏

取消

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

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

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

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

评论

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