웹 개발 메모장
[자바스크립트] 공튀기기 본문
바운스 바운스 (브라우저 1920*1080에 최적)
※모바일 안되고 웹에서만 가능합니다.
START Bounce
조종하기 a : 왼쪽 / d : 오른쪽 (영어만)
스타트 버튼(=공) 과 조종하기 버튼, 키 이벤트를 처리할 input 태그 생성
1 2 3 4 5 6 7 | <div id='div01' onclick='ex01()' style='background-color:#FFFFFF; position:absolute; top:150px; left:800px; display:inline-block; border-radius:0px; border:1px solid #5AAFFF; width:300px;height:200px; color:#5AAFFF; font-weight:bold; font-size:20pt; padding-top:100px;'> START Bounce </div> <div id='ballControlBtn' onclick='focusToKeyEventInput()' style='border:1px solid #CCCCCC;'> 조종하기 </div> <input id='keyEventInput' type='text' onkeypress='keyEventFunc(event)' onfocus='btnFocuson()' onblur='btnFocusout()' style='opacity:0;'> | cs |
힘과 방향에 대한 전역 변수 선언
1 2 3 | var v = 0.1; //중력 var F = 0.1; //왼쪽 오른쪽에 가할 힘 var LR = 0; //왼쪽 른쪽 방향을 나타내는 변수 | cs |
버튼을 동그랗게 만들 함수
1 2 3 4 5 6 7 | function toCircle(){ var div01 = document.getElementById('div01'); var px = parseInt(div01.style['border-radius'])+1; if(px <= 150) { div01.style['border-radius'] = px+'px'; } } | cs |
버튼을 작게 만들 함수
1 2 3 4 5 6 7 8 9 10 11 12 13 | function toSmall(){ var div01 = document.getElementById('div01'); //start 지우기 div01.style['padding-top'] = '0px'; div01.innerHTML = ''; var px = parseInt(div01.style['width'])-1.5; if(px >= 70) { div01.style['width'] = px+'px'; div01.style['height'] = px+'px'; } } | cs |
버튼에 색을 입힐 함수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function toColorful() { var div01 = document.getElementById('div01'); var backgroundColor = div01.style['backgroundColor']; var startIdx = backgroundColor.indexOf('(')+1; var endIdx = backgroundColor.indexOf(')'); var rgb = backgroundColor.substring(startIdx, endIdx).split(','); rgb[0] -= (rgb[0] >90) ? 1 : 0; rgb[1] -= (rgb[0] >175) ? 1 : 0; div01.style['backgroundColor'] = 'rgb('+rgb[0]+','+rgb[1]+','+rgb[2]+')'; } | cs |
중력을 표현할 함수
1 2 3 4 5 6 7 8 9 10 11 12 | function gravity() { var div01 = document.getElementById('div01'); v += (v < 5) ? 0.1:0; var px = parseInt(div01.style['top'])+1*v; if(px <= 839) { div01.style['top'] = px+'px'; }else { heatFloor(); } } | cs |
왼쪽 또는 오른쪽으로 힘을 받는것을 표현한 함수
1 2 3 4 5 6 7 8 9 10 11 12 | function getForce() { var div01 = document.getElementById('div01'); F += (F < 1) ? 0.01*LR : 0; var px = parseInt(div01.style['left'])+1*F*LR; if(px <= 1500 && px >= 700) { div01.style['left'] = px+'px'; }else { heatWall(); } } | cs |
벽이나 바닥에 부디쳤을 때 방향 전환을 표현할 함수
1 2 3 4 5 6 7 | function heatFloor(){ v = -v; } function heatWall(){ LR = -LR; } | cs |
키 이벤트 발생 시 방향 전환 처리에 대한 함수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function focusToKeyEventInput(){ document.getElementById('keyEventInput').focus(); } function keyEventFunc(e) { if(e.keyCode==65 || e.keyCode==97){ LR = -1; clearInterval(inter05); inter05 = setInterval(getForce, 1); }else if(e.keyCode==68 || e.keyCode==100){ LR = 1; clearInterval(inter05); inter05 = setInterval(getForce, 1); } document.getElementById('keyEventInput').value = ''; } | cs |
키 이벤트 발생 시 버튼의 CSS 효과 주는 함수
1 2 3 4 5 6 7 8 | function btnFocuson(){ ballControlBtn.style['backgroundColor'] = '#5AAFFF'; ballControlBtn.style['color'] = 'white'; } function btnFocusout(){ ballControlBtn.style['backgroundColor'] = 'white'; ballControlBtn.style['color'] = '#5AAFFF'; } | cs |
START 버튼 클릭 시 공을 움직이는 타이머 시작하는 함수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function ex01() { var inter01 = setInterval(toCircle, 10); setTimeout(function(){ clearInterval(inter01); }, 2000); var inter02 = setInterval(toSmall, 10); setTimeout(function(){ clearInterval(inter02); }, 2000); var inter03 = setInterval(toColorful, 15); setTimeout(function(){ clearInterval(inter03); var inter04 = setInterval(gravity, 1); }, 2000); setTimeout(function(){ inter05 = setInterval(getForce, 1); }, 2000); } | cs |
'옛날.. > 자바스크립트' 카테고리의 다른 글
[JQuery] 선택자 시각적으로 정리 (0) | 2018.01.10 |
---|---|
[자바스크립트] 예외 처리 사용 예제 (0) | 2018.01.10 |
[자바스크립트] 브라우저 객체 모델과 이벤트 (0) | 2018.01.08 |
[자바스크립트] reduce() / reduceRight() 간단 예제 (0) | 2018.01.08 |
[자바스크립트] String 객체의 메소드 (0) | 2018.01.08 |
Comments