2016-07-16 1 views
0

私はJavascriptでゲームを作っています。私は左、右、重力、下に移動する機能を持っています。重力機能は、プラットフォーム(div)から離れたプレイヤーの位置を画面の一番下に移動させます。あなたが右(OnButtonDownr())に移動しているときにgravity()関数が呼び出されると、それは動作から動きを止めます。私が言っていることは、私が右折してプラットフォームから離れて上がってみるとうまくいかないことですが、私がプラットフォームから離れる前に上がることができます。私が上ってみると、それはうまくいきません。それは、その位置が0に設定されているように見えますが、同時に動きます。私のコード:Javascript - setInterval()は、clearInterval()の後に実行中です

HTML(index.htmを):

<html> 
<head><link rel='stylesheet' href='style.css'></head> 
<body> 


<div id='level' class='level'> 
    <div class='start_platform' id='plat1'></div> 
    <div class='platform' style=' 

           '></div> 
</div> 


    <img id='player' src='img/player.png' style='height:64px;'></img> 
    <div class='buttons'> 
     <button id='moveleft' onmousedown="OnButtonDownl (this)" onmouseup="OnButtonUpl (this)"><--</button> 
     <button id='moveup' onmousedown="OnButtonDownu (this)" onmouseup="OnButtonUpu (this)">^</button> 
     <button id='moveright' onmousedown="OnButtonDownr (this)" onmouseup="OnButtonUpr (this)">--></button> 
    </div> 
</body> 

<script type='text/javascript' src='scripts/move.js'></script> 
<script type='text/javascript' src='scripts/gravity.js'></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
</html> 

JS(move.js):

//move left 
var elem = document.getElementById("player"); 
function OnButtonDownl (button) { 
    var posl = parseInt(document.getElementById("player").style.left, 10) || 0; 
window.idl = setInterval(framel, 5); 
function framel() { 
    posl--; 
    elem.style.left = posl + 'px'; 
    gravityCheck(); 
}} 
function OnButtonUpl (button) { 
    clearInterval(idl); 
} 

//move right 
var elem = document.getElementById("player"); 
function OnButtonDownr (button) { 
var posr = parseInt(document.getElementById("player").style.left, 10) || 0; 
window.idr = setInterval(framer, 5); 
function framer() { 
    posr++; 
    elem.style.left = posr + 'px'; 
    gravityCheck(); 
}} 
function OnButtonUpr (button) { 
    clearInterval(idr); 
} 

//move up 
var elem = document.getElementById("player"); 
function OnButtonDownu() { 
var posu = parseInt(document.getElementById("player").style.bottom, 10) || 0; 
window.idu = setInterval(frameu, 5); 
elem.style.bottom = 0; 
function frameu() { 
    gravity = false; 
    posu++; 
    elem.style.bottom = posu + 'px'; 
}} 
function OnButtonUpu (button) { 
    clearInterval(idu); 
} 

JS(gravity.js):

var gravity = true; 
function gravityCheck() { 
var player = parseInt(document.getElementById("player").style.left, 10) || 0; 
var plat1 = parseInt(document.getElementById("plat1").style.left, 10) || 0; 

var width = player - plat1; 

    var elem = document.getElementById("player"); 
    var pos = parseInt(document.getElementById("player").style.bottom, 10) || 0; 
    window.id = setInterval(frame, 5); 
    function frame() { 
    if(width > 100 && width < 164) { 
    if(gravity = true) { 
     pos--; 
     elem.style.bottom = pos + 'px'; 
     if(elem.style.bottom = 0) { 
      clear(); 
     } 
    } 
    } 
    } 
function clear() { 
clearInterval(id); 
}} 

どうすればこの問題を解決できますか?前もって感謝します。

答えて

0

正しくクリアされていない可能性があります。間隔を設定する前に、以前に設定した間隔をクリアしてください。

if(window.idl) clearInterval(window.idl); 
window.idl = setInterval(framel, 5); 
関連する問題