>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술로 구현된 키보드를 사용하여 문자 이동을 제어하는 ​​예

JavaScript_javascript 기술로 구현된 키보드를 사용하여 문자 이동을 제어하는 ​​예

WBOY
WBOY원래의
2016-05-16 16:38:352477검색

사실 이 예에서는 js의 두 가지 핵심 시간인 키보드 이벤트 onkeydown과 주기적 실행 이벤트 setInterval을 사용합니다.

결과 달성

키보드의 특정 키를 누르면 웹페이지의 문자가 해당 동작을 수행하여 키보드를 사용하여 이동을 제어하는 ​​효과를 얻습니다

구현 단계

1. 예약 키 기능:

워: 올라
s: 하향
a:왼쪽
d: 그렇죠
스페이스: 중지

2. 키 값을 예약한 후 키 이벤트를 캡처하고 사용자가 어떤 키를 눌렀는지 확인할 수 있어야 합니까?

키보드 이벤트를 캡처하려면 onkeydown을 사용할 수 있습니다
키-값 코드를 얻으려면 event.keyCode
를 사용할 수 있습니다.
3. setInterval 주기적 실행 이벤트를 사용하여 그림 교체

사진 교체는 작업 걷기 효과를 달성하기 위한 것입니다
그러나 사이클 실행을 지우려면 ClearInterval을 사용해야 합니다. 그렇지 않으면 속도가 점점 더 빨라집니다.

샘플 코드:

<html>
	<head>
		<meta charset="utf-8" />
		<title>人物走动</title>
	</head>
	<body onkeydown="show()">
		<ul style="posttion:absolute;border:1px solid #999;list-style:none;width:150px;padding:20px;background:#ffffef;">
			<li>w:向上</li>
			<li>s:向下</li>
			<li>a:向左</li>
			<li>d:向右</li>
			<li>空格:停止</li>
			<li style="margin-top:20px;"><u><a href="http://www.jb51.net">脚本之家</a></u></li>
		</ul>
		<div style="position:absolute;top:0;left:0" id='di'><img src="http://files.jb51.net/file_images/article/201408/201482791327688.gif&#63;201472791345" id="img"></div>
		<script>
			var img1='http://files.jb51.net/file_images/article/201408/201482791656841.gif&#63;201472791722';
			var img2='http://files.jb51.net/file_images/article/201408/201482791327688.gif&#63;201472791345';
			var x=0;
			var y=0;
			var xs=0;
			var ys=0;
			var flag=true;
			var zq=null;
			function ks(){
				zq=setInterval(function(){	
					var s=document.getElementById('img');	
					var str=s.src;
					var area=document.getElementById('di');
					var xpos=parseInt(area.style.left);
					var ypos=parseInt(area.style.top);
					x=x+xs;
					y=y+ys;
					area.style.left=x;
					area.style.top=y;
					var pos=str.lastIndexOf('/')+1;
					var hz=str.substr(pos);
					if(hz==img1){
						s.src= img2;
					}else{
						s.src= img1;
					}				
				},50);
			}
			ks();

			function show(){
				var sz=window.event.keyCode;
				switch(sz){
					case 87:
						img1='http://files.jb51.net/file_images/article/201408/ren_h_1.gif';
						img2='http://files.jb51.net/file_images/article/201408/ren_h_2.gif';
						ys=-5;
						xs=0;
						break;
					case 65:
						img1='http://files.jb51.net/file_images/article/201408/ren_l_1.gif';
						img2='http://files.jb51.net/file_images/article/201408/ren_l_2.gif';
						xs=-5;
						ys=0;
						break;
					case 68:
						img1='http://files.jb51.net/file_images/article/201408/ren_r_1.gif';
						img2='http://files.jb51.net/file_images/article/201408/ren_r_2.gif';
						xs=5;
						ys=0;
						break;
					case 83:
						img1='http://files.jb51.net/file_images/article/201408/ren_q_1.gif';
						img2='http://files.jb51.net/file_images/article/201408/ren_q_2.gif';
						ys=5;
						xs=0;
						break;
					case 32:
					  if(flag){
						  clearInterval(zq);
						  flag=false;
						  break;
					   }
					case 13:
					 if(!flag){
						 ks();
						 flag=true;
						break;
					  }
				}
			}
		</script>
	</body>
</html>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.