Как запустить цикл с помощью onkeydown (после нажатия)?

#javascript #xhtml

#javascript #xhtml

Вопрос:

Я работаю над игрой и хочу, чтобы при однократном нажатии кнопки на клавиатуре переходил к моему игровому персонажу до тех пор, пока заданное условие цикла не станет неправильным. Но теперь проблема в том, что мой персонаж прыгает одновременно с нажатием кнопки на клавиатуре.

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--AnimationUsingKeyboard.html-->
<html lang="EN" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/xml; charset=utf-8"/>
        <title>AnimationUsingKeyboard.html</title>
        <link rel="Stylesheet" type="text/css" href=""/>
        <script type="text/javascript" src="AnimationUsingKeyboard.js">
            //<![CDATA[
            //]]>
        </script>
    </head>
    <body onload="init()">
        <h1>Animation Using Keyboard Input</h1>
        <div id="outline" style="position:absolute;
                                width:50px;
                                 height:50px;
                                 top:100px;
                                 left:5px;">
            <img id="krizen" src="krizen1.png" width="50px" height="50px" alt="krizen.png"/>
        </div>
        <div id="output">
        </div>
    </body>
</html>
  
 var imgList=new Array("krizen1.png",
                      "krizen2.png",
                      "krizen3.png",
                      "krizen4.png",
                      "krizen5.png",
                      "krizen6.png",
                      "krizen7.png",
                      "krizen8.png"
                      );
var outline;
var krizen;
var jump;

function init(){
 outline=document.getElementById("outline");
 krizen=document.getElementById("krizen");
 document.onkeydown=keyListner;
}
function keyListner(e){
 if(!e){
e=window.event;
}//end if
if(e.keyCode==38){
 jump=parseInt(outline.style.top);
 while(jump!=70){
 outline.style.top=jump "px";
 jump-=5;
 }//end while
}//end if
}//end keyListner function
  

Комментарии:

1. Можете ли вы показать свой код? Обычно пользовательский ввод и циклы несовместимы.

2. Можете ли вы показать, что вы уже сделали?

3. будь добр, покажи свой html, приятель.. а также немного больше о javascript.

Ответ №1:

Вы могли бы попробовать установить переменную; допустим, нажата на 1, если нажата клавиша, и если она отпущена, она становится нажатой на 0, и цикл проверяет, нажата ли клавиша ===1

Комментарии:

1. Если вы хотите, чтобы цикл не прекращался, просто не добавляйте часть Pressed ===0!

2. также используйте setTimeout для анимации перехода и проверьте, нажато ли == 1, так как выполнение этого в цикле не сработает

3. Как мне нравятся комментарии? @Nikos M. Понравилось!