Home Web Front-end JS Tutorial Free fall motion effect code implemented by js+html5_javascript skills

Free fall motion effect code implemented by js+html5_javascript skills

May 16, 2016 pm 03:17 PM
html5 js

The example in this article describes the free fall motion effect achieved by js+html5. Share it with everyone for your reference, the details are as follows:

The screenshot of the running effect is as follows:

The specific code is as follows:

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

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

<!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>

 <title>canvas自由落体</title>

 <script type="text/javascript" >

  var canvasheight = 500;

  var canvaswidth = 500;

  var g = 9.8;

  var plusV = 0.5;

  function Block(vo, x, y, width, height, g, context) {

   var _self = this;

   _self.vo = vo || 0;

   _self.x = x;

   _self.y = y;

   _self.prevX = x;

   _self.prevY = y;

   _self.g = g;

   _self.height = height;

   _self.width = width;

   _self.prevTime = new Date().getTime();

   context.fillStyle = "black";

   _self.down = function () {

    var time = (new Date().getTime() - _self.prevTime) / 200,

     y = _self.vo * time + 1 / 2 * _self.g * time * time + _self.y;

    //console.log("down:time=" + time + ":y=" + y + ":" + _self.vo);

    if (y + _self.height >= canvasheight) {

     _self.g--;

     _self.vo = _self.g * time;

     _self.prevTime = new Date().getTime();

     _self.up();

    } else {

     context.clearRect(_self.prevX, _self.prevY - 1, _self.prevX + _self.height, _self.prevY + _self.width);

     context.fillRect(_self.x, y, _self.width, _self.height);

     _self.prevX = x;

     _self.prevY = y;

     setTimeout(function () {

      _self.down();

     }, 30);

    }

   }

   _self.up = function () {

    var time = (new Date().getTime() - _self.prevTime) / 200,

     v = _self.vo - _self.g * time,

     y = canvasheight - _self.height - _self.vo * time + 1 / 2 * _self.g * time * time;

    //console.log("up:time=" + time + ":v=" + v);

    if (v <= 0) {

     _self.vo = 0;

     _self.y = y;

     _self.prevTime = new Date().getTime();

     if (y + _self.height < canvasheight) {

      _self.down();

     } else {

      return;

     }

    } else {

     context.clearRect(_self.prevX, _self.prevY - 1, _self.prevX + _self.height , _self.prevY + _self.width);

     context.fillRect(x, y, _self.width, _self.height);

     _self.prevX = x;

     _self.prevY = y;

     setTimeout(function () {

      _self.up();

     }, 30);

    }

   }

  }

  window.onload = function () {

   var canvas = document.getElementById('canvas');

   var context = canvas.getContext('2d');

   height = canvas.offsetHeight;

   var block = new Block(0, 100, 0, 20, 20, g, context);

   block.down();

  }

 </script>

</head>

<body>

<center>

<canvas id="canvas" width="500" height="500" style="background:#DDDDDD" ></canvas>

</center>

<input type="button" value="stop" onclick="stop()" />

<input type="button" value="start" onclick="start()" />

</body>

</html>

Copy after login

Readers who are interested in more content related to JavaScript sports can check out the special topic on this site: " Summary of JavaScript sports effects and techniques"

I hope this article will be helpful to everyone in JavaScript programming.

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

Nested Table in HTML

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Table Border in HTML

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

HTML margin-left

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

HTML Table Layout

Moving Text in HTML Moving Text in HTML Sep 04, 2024 pm 04:45 PM

Moving Text in HTML

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

HTML Ordered List

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

HTML onclick Button

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

HTML Input Placeholder

See all articles