> 웹 프론트엔드 > JS 튜토리얼 > 빠른 팁 : JavaScript에서 게임 루프를 만드는 방법

빠른 팁 : JavaScript에서 게임 루프를 만드는 방법

William Shakespeare
풀어 주다: 2025-02-17 09:32:09
원래의
715명이 탐색했습니다.

Quick Tip: How to Make a Game Loop in JavaScript

코어 포인트

JavaScript 게임 루프는 상태가 시간이 지남에 따라 상태가 바뀌는 애니메이션과 게임을 렌더링하는 데 사용되는 기술입니다. 여기에는 사용자 입력을 수신하고 경과 시간 상태를 업데이트 한 다음 프레임을 그립니다.

    메소드는 브라우저가 다음 리 페인트 전에 가능한 빨리 지정된 기능을 호출하도록 요청하는 애니메이션을위한 API이며, 콜백 함수가 실행을 시작하기위한 타임 스탬프를 제공합니다.
  • > 사용자 입력은 누르는 키를 추적하고, 모든 및
  • 이벤트를 듣고, 눌린 키를 기반으로 X 및 Y 위치를 업데이트하고, 객체를 경계.
  • 이동 및 회전을위한 추가 벡터를 저장하고, 왼쪽 및 오른쪽 키를 기반으로 회전 업데이트, 상하 키 및 회전을 기반으로 한 움직임 업데이트, 이동 벡터 및 캔버스 경계를 ​​기반으로 한 위치를 업데이트하여 더 복잡한 애니메이션을 만들 수 있습니다. requestAnimationFrame
  • JavaScript 게임 루프는 시간이 지남에 따라 상태를 변경하는 애니메이션과 게임을 렌더링하는 데 사용되는 기술입니다. 핵심에는 가능한 여러 번 실행되는 기능이 있으며,이 기능은 사용자 입력을 받고 경과 시간 상태를 업데이트 한 다음 프레임을 그립니다.
  • 이 기사는이 기본 기술의 작동 방식을 간략하게 소개하고 자신의 브라우저 기반 게임 및 애니메이션을 만들기 위해 도움이됩니다. keydown 다음은 JavaScript 게임 루프의 예입니다. keyup 메소드는 브라우저가 다음 리피트 전에 가능한 빨리 지정된 기능을 호출하도록 요청합니다. 애니메이션 렌더링 전용 API이지만 짧은 타임 아웃으로
  • 로 유사한 결과를 얻을 수도 있습니다. 는 콜백 함수가 실행되기 시작하는 타임 스탬프를 통과하며, 여기에는 창이로드되었으므로 밀리 초 수가 포함되어 있습니다.
  • 값 또는
업데이트 위치 첫 번째 애니메이션은 매우 간단합니다. 빨간 사각형은 캔버스의 가장자리에 도달 할 때까지 오른쪽으로 이동하고 출발점으로 돌아갑니다.

정사각형의 위치를 ​​저장하고 업데이트 함수에서 X 위치를 증가시켜야합니다. 경계에 도달하면 캔버스 너비를 빼기 위해 시작점으로 다시 루프 할 수 있습니다.

새 프레임을 그립니다
function update(progress) {
  // 更新自上次渲染以来经过时间的世界的状态
}

function draw() {
  // 绘制世界的状态
}

function loop(timestamp) {
  var progress = timestamp - lastRender;

  update(progress);
  draw();

  lastRender = timestamp;
  window.requestAnimationFrame(loop);
}
var lastRender = 0;
window.requestAnimationFrame(loop);
로그인 후 복사
로그인 후 복사

이 예제는 requestAnimationFrame 요소를 사용하여 그래픽을 렌더링하지만 게임 루프는 HTML 또는 SVG 문서와 같은 다른 출력과 함께 사용할 수도 있습니다. setTimeout 드로잉 기능은 현재 세계의 상태를 렌더링합니다. 각 프레임에서 캔버스를 지우고 상태 객체에 저장된 위치에 중앙이있는 10 픽셀 빨간색 사각형을 그립니다. requestAnimationFrame performance.now() 우리는 모바일을 달성했습니다!

<<> 사용자 입력 <🎜 🎜>에 응답하십시오 다음으로, 우리는 객체의 위치를 ​​제어하기 위해 키보드 입력을 가져옵니다. 는 어떤 키를 누르는 지 추적합니다.

모든 state.pressedKeys

이벤트를 듣고 그에 따라 업데이트합시다. 내가 사용할 키는 <🎜 🎜> d <🎜 🎜> (오른쪽), <🎜 a <🎜 🎜> (왼쪽), <🎜 🎜> w
function update(progress) {
  // 更新自上次渲染以来经过时间的世界的状态
}

function draw() {
  // 绘制世界的状态
}

function loop(timestamp) {
  var progress = timestamp - lastRender;

  update(progress);
  draw();

  lastRender = timestamp;
  window.requestAnimationFrame(loop);
}
var lastRender = 0;
window.requestAnimationFrame(loop);
로그인 후 복사
로그인 후 복사
(up) 및 s

아래입니다). 여기에서 주요 코드 목록을 찾을 수 있습니다. keydown keyup 그런 다음 눌린 키에 따라 x 및 y 값을 업데이트하고 객체를 경계 내에 보관해야합니다. state.pressedKeys 우리는 사용자 입력을 구현했습니다! (공간 제한으로 인한 소행성 게임 및 FAQ에 대한 후속 내용은 여기서 생략됩니다. 핵심 아이디어는 이전 부분에 완전히 표시되었으며 후속 컨텐츠는 더 복잡하고 자주 묻는 질문입니다. 필요에 따라 스스로 보충 할 수 있습니다

위 내용은 빠른 팁 : JavaScript에서 게임 루프를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿