js如何利用键盘事件实现人物行走


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

使用的图:

f82390ae8afb9ba9750fac88e04ad1c.png

效果图:

26ecb9da85499cfc645fa0d782cda5e.png

(推荐教程:javascript教程)

实例代码:

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

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>Title</title>

  <style>

    html

    {

      background-color: deepskyblue;

    }

    div

    {

      width: 32px;

      height: 32px;

      background-image: url("img/Actor01-Braver03.png");

      position: absolute;

    }

  </style>

</head>

<body>

  <div></div>

  <script>

    var key=0;

    var bool=false;

    var speed=2;//每次行走的距离

    var actor;//人物div

    const HEIGHT=33;//人物的高

    const WIDTH=32;//人物的宽

    var arr=[1,3,2,0];//4排图像 代表 下 左 右 上

    var num=0;

    var jumpBool=false;

    var actorSkinSpeed=8;

    var jumpSpeed=-15;

    init();

    function init() {

      window.addEventListener("keydown",keyHandler);

      window.addEventListener("keyup",keyHandler);

      actor=document.querySelector("div");

      setInterval(animation,16);

      //按键驱动不能实现 实现的是通过按键触发相应动画 实现我们的人物的帧动画 跳转

    }

      

    function keyHandler(e) {

      bool=e.type==="keydown";

      key=e.keyCode;

      if(!bool){

        num=0;

        actor.style.backgroundPositionX=-num*WIDTH+"px";

      }

      if(key===32 && !jumpBool){//跳跃 空格驱动

        jumpBool=true;

      }

    }

      

    function animation() {

      jump();

      if(!bool)return;

      walk();//单方向行走 实现

      changeDirection();//方向确定时 内部行走的实现

    }

      

    function jump() {

      if(!jumpBool)return;

      jumpSpeed+=1;

      if(jumpSpeed===15){

        jumpBool=false;

        jumpSpeed=-15;

        return;

      }

      actor.style.top=actor.offsetTop+jumpSpeed+"px";

    }

      

    function changeDirection() {

      actorSkinSpeed--;

      if(actorSkinSpeed>0) return;

      actorSkinSpeed=8;

      num++;

      if(num>3) num=0;

      actor.style.backgroundPositionX=-num*WIDTH+"px";

    }

   

    function walk() {

      switch (key){

        case 37://左 ×1 第二排

          actor.style.left=actor.offsetLeft-speed+"px";

          actor.style.backgroundPositionY=-arr[0]*HEIGHT+"px";

          break;

        case 38://上 ×3 第四排

          actor.style.top=actor.offsetTop-speed+"px";

          actor.style.backgroundPositionY=-arr[1]*HEIGHT+"px";

          break;

        case 39://右 ×2 第三排

          actor.style.left=actor.offsetLeft+speed+"px";

          actor.style.backgroundPositionY=-arr[2]*HEIGHT+"px";

          break;

        case 40://下 ×0 第一排

          actor.style.top=actor.offsetTop+speed+"px";

          actor.style.backgroundPositionY=-arr[3]*HEIGHT+"px";

          break;

   

      }

    }

  </script>

</body>

</html>

相关视频教程推荐:javascript视频教程

以上就是js如何利用键盘事件实现人物行走的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

js 定义用字符串拼接的变量的解析

js如何获取ueditor富文本编辑器中的图片地址

js怎么获取网站的url

js变量的基本使用方法介绍

微信js是什么

js遍历对象有几种方法

一起来聊聊jquery、javascript与js三者间的区别

js中渐进增强是什么意思?

javascrip注释符是什么

vue全家桶有哪些

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




打赏

取消

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

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

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

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

评论

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