остановка кода javascript при нажатии клавиши Shift

Я использую этот код JavaScript для перемещения некоторых облаков, теперь мне нужно проверить, нажал ли пользователь клавишу Shift - когда они это сделают, он остановит анимацию этого облака.

Код, который я использую для перемещения:

<script language="javascript">

  function StartMove() {
    var cssBGImage=new Image();
    cssBGImage.src="path to your image.jpg";

    window.cssMaxWidth=cssBGImage.width;
    window.cssXPos=0;
    setInterval("MoveBackGround()",50);
  }

  function MoveBackGround () {
    window.cssXPos=window.cssXPos+1;
    if (window.cssXPos>=window.cssMaxWidth) {
      window.cssXPos=0;
    }
    toMove=document.getElementById("scroller");
    toMove.style.backgroundPosition=window.cssXPos+"px 0px";
  }
</script>

Что-то вроде этого кода. Обратите внимание, это не работает со мной

function GetShiftState (event) {
  if (event.shiftKey)
  {
    document.getElementById("myimg").clearTimeout(t);
  }
}

person Mariam Magdy    schedule 24.11.2014    source источник


Ответы (1)


Вам нужно отслеживать имя interval

См. Соответствующий пример на MDN

var global_cloudInterval;

function StartMove() {
    var cssBGImage=new Image();
    cssBGImage.src="path to your image.jpg";

    window.cssMaxWidth=cssBGImage.width;
    window.cssXPos=0;

    // Keep track of the interval using a global variable
    // also, don't need to wrap MoveBackGround in quotes
    global_cloudInterval = setInterval(MoveBackGround, 50);
}

function MoveBackGround () {
    window.cssXPos=window.cssXPos+1;
    if (window.cssXPos>=window.cssMaxWidth) {
        window.cssXPos=0;
    }
    toMove=document.getElementById("scroller");
    toMove.style.backgroundPosition=window.cssXPos+"px 0px";
}

function GetShiftState (event){
    if (event.shiftKey){
        // now clear the interval using the global variable
        clearInterval(global_cloudInterval);
    }
}
person jasonscript    schedule 24.11.2014