1
<body>
2
<div id="man" style="position:absolute;50px;height:40px;top:200px;left:200px;background:red"></div>
3
<button onclick="alert(keyCache.length)">ask</button>
4
</body>
5
<script>
6
var keyCache = [];
7
var isCache = false;
8
var cacheNum = 0;
9
10
document.onkeydown = insertKey;
11
document.onkeyup = function(){if(!isCache && event.keyCode>=37&& event.keyCode<=40) keyCache.length = 0;}
12
13
function insertKey(){
14
var kc = event.keyCode;
15
if(kc>=37 && kc<=40){
16
if(kc!=keyCache[keyCache.length-1]){
17
keyCache.length = 0;
18
keyCache.push(kc,kc,kc,kc,kc,kc) //保证流畅多注入6个
19
isCache = true;
20
}
21
keyCache.push(kc);
22
}
23
}
24
25
window.setInterval("writeCache()", 50);
26
27
function writeCache(){
28
if(keyCache.length==0) return;
29
30
var kc = keyCache.shift();
31
32
switch(kc){
33
case 37: man.style.left = parseInt(man.style.left) - 5;break;
34
case 38: man.style.top = parseInt(man.style.top) - 5;break;
35
case 39: man.style.left = parseInt(man.style.left) + 5;break;
36
case 40: man.style.top = parseInt(man.style.top) + 5;break;
37
}
38
39
if(isCache) cacheNum++;
40
if(cacheNum == 5){
41
isCache = false;
42
cacheNum = 0;
43
}
44
}
45
</script>

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
