0
나는 간단한 HTML 게임을 만들려고 노력하고 있으며 캐릭터가 점프하는 데 문제가 있습니다. 모든 것이 모든 움직임에서 정상적으로 작동합니다. 왼쪽이나 오른쪽으로 움직이면 점프를 호출하려고하면 화면이 멈추고 아무런 조치도 취하지 않습니다. 나는 아마 무언가를 듣는 것은 정말로 간단하지만, 나는 그것을 얻지 못하는 것 같습니다. 또한 점프 기능에서 draw/clear 호출을 생략하려고 시도했지만 그 중 하나도 작동하지 않았습니다. HTML 5 캔버스 이동
<script>
var isJumping = false;
var isFalling = false;
var recwidth = 400;
var recheight = 400;
var xpos = 200;
var ypos = 200;
window.onload = function() {
var FPS = 30;
setInterval(function() {
clear();
draw();
}, 1000/FPS);
};
function jump()
{
isJumping=true;
while (isJumping == true)
{
ypos=ypos-3;
clear();
draw();
if(ypos==297)
{
isJumping == false;
}
}
}
function changex(x){
xpos = xpos + (x);
}
function changey(y){
ypos = ypos + (y);
}
function draw(){
var canvas = document.getElementById('canvas')
var context = canvas.getContext('2d');
var img=new Image()
img.src="character.png"
img.onload = function() {
context.drawImage(img,xpos,ypos)}
}
function clear(){
var canvas = document.getElementById('canvas')
var context = canvas.getContext('2d');
context.clearRect(0,0,);
}
document.onkeydown = function(event) {
var keyCode;
if(event == null)
{
keyCode = window.event.keyCode;
}
else
{
keyCode = event.keyCode;
}
switch(keyCode)
{
// left
case 37:
//left
changex(-5);
break;
// up
case 38:
// action when pressing up key
jump();
break;
// right
case 39:
// action when pressing right key
changex(5);
break;
// down
case 40:
// action when pressing down key
changey(5);
break;
default:
break;
}
}
와이 발견 예 - 이것은 일반적으로 while 루프 이후의 setTimeout 또는 setInterval을 함께 이루어집니다 연속 화면 업데이트
나는에서는 setTimeout과 얼마나 부드러운 것을 확실하지 않다을 너무 꽉 , 프로세서에 호흡 할 시간을주지는 않습니다. while 루프는 너무 빡빡해서 연속적인 화면 업데이트를하지 못하기 때문에 보통 setTimeout을 사용합니다. – mplungjan
좋습니다. 그래서 기본적으로 while 루프를 사용하면 너무 빨리 실행하려고하는데 과부하가 발생합니까? 그렇다면 어떻게 연속적으로 여러 개의 제한 시간을 실행할 수 있습니까? –
정확하게. 나는 매끄러운 것들이 setTimeout과 함께 있을지 모르지만, 그것은 일반적으로 사용되는 것이다. 루프 애니메이션 캔버스 검색에서 이것을 찾았습니다. http://www.script-tutorials.com/html5-animation-patterns-with-loops/ – mplungjan