다음은 스코어 보드를 배치하겠습니다. 나는 이것을 다른 요소들 위로 상단과 중앙에 나타나기를 원합니다. 명령 위치 : 절대를 사용하면 내가 원하는 곳에 놓고 왼쪽으로 배치 할 수 있습니다. 50%는 창 상단을 가로 질러 반쯤 배치하지만 스코어 보드 요소의 가장 왼쪽에서 시작합니다. 완벽하게 중앙에 있도록하기 위해 변환 속성을 사용하고 Z-Index 속성은 항상 상단에 있는지 확인합니다.
나는 또한 텍스트 글꼴이 복고풍을 주제하기를 원합니다. 대부분의 현대식 브라우저는 내 자신의 글꼴을 포함시킬 수 있습니다. Codeman38 (Zone38.net)에서 적절한 프레스 시작 2p 글꼴을 찾았습니다. 스코어 보드에 글꼴을 추가하려면 새 글꼴 얼굴을 만들어야합니다.<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span>></span>
</span><span><span><span><head</span>></span>
</span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
</span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
</span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
이제 점수는 H1 태그에 있으므로 모든 H1 태그에 대한 글꼴을 설정할 수 있습니다. 글꼴이 없을 경우를 대비하여 몇 가지 백업 옵션을 제공합니다.
다른 요소의 경우 스프라이트 이미지 시트를 사용하겠습니다. 스프라이트 시트에는 한 파일로 게임에 필요한 모든 이미지가 포함되어 있습니다 (아래 이미지 참조).
이 시트에 이미지가있는 모든 요소에는 스프라이트 클래스가 할당됩니다. 그런 다음 각 요소마다 배경 위치를 사용하여 표시하고 싶은 스프라이트 시트의 일부를 정의합니다.
<span><span><span><div</span> id<span>="arena"</span>></span>
</span> <span><span><span><div</span> id<span>="score"</span>></span>
</span> <span><span><span><h1</span>></span>
</span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
</span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
</span> <span><span><span></h1</span>></span>
</span> <span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
</span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
</span> <span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="controls-right"</span>></span>
</span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
</span> <span><span><span></div</span>></span>
</span><span><span><span></div</span>></span>
</span>
다음, 스프라이트 시트를 사용하는 모든 요소에 스프라이트 클래스를 추가하겠습니다. 이것을하기 위해 간단히 html로 돌아 가야합니다 :
이제 각 요소의 시트에 각 스프라이트의 위치를 표시해야합니다. 다시 한번, 배경 위치를 사용 하여이 작업을 수행하겠습니다
위치 : 플레이어, 상대방 및 공의 절대 속성을 사용하면 JavaScript를 사용하여 움직일 수 있습니다. 지금 페이지를 보면 컨트롤이 표시되고 공에 불필요한 조각이 붙어 있습니다. 스프라이트 크기가 기본 128 픽셀보다 작기 때문에 올바른 크기로 조정하겠습니다. 공 하나 밖에 없으므로 크기를 직접 설정하겠습니다.
4 가지 제어 요소가 있습니다 (사용자가 플레이어를 옮길 수있는 버튼)이 있으므로 특별 클래스를 만들도록해야합니다. 또한 주위에 작은 공간이 있도록 마진을 추가하겠습니다. <span>body {
</span> <span>margin: 0px;
</span> <span>height: 100%;
</span><span>}
</span>
이 클래스를 추가 한 후 게임은 훨씬 더 잘 보이는 컨트롤이 있습니다.
마지막으로해야 할 마지막 일은 페이지가 모바일 장치에서 실행될 때 사용자의 엄지 손가락으로 컨트롤을 배치하는 것입니다. 아래쪽 모서리에 고착하겠습니다 :
<span><span>#arena</span> {
</span> <span>background-image: <span>url(arena.png)</span>;
</span> <span>background-size: 100% 100%;
</span> <span>margin: 0px;
</span> <span>width: 100%;
</span> <span>height: 100%;
</span> <span>overflow: hidden;
</span><span>}
</span>
이 디자인에 대한 좋은 점은 모든 것이 상대적인 위치로 설정된다는 것입니다. 이것은 화면이 여러 가지 크기가 될 수 있고 여전히 게임을 좋아 보이게 할 수 있음을 의미합니다.
튀는 공 를 따르십시오
이제 공을 움직일 것입니다. JavaScript 코드의 경우 CSS와 마찬가지로 HTML에서 Ping.js라는 파일을 참조했습니다. 이 코드를 해당 이름의 새 파일에 추가하겠습니다. 나는 공과 각 선수들을 위해 물건을 만들려고하지만 물체의 공장 패턴을 사용하겠습니다.
이것은 간단한 개념입니다. 볼 기능은 당신이 그것을 부를 때 새로운 공을 만듭니다. 새 키워드를 사용할 필요가 없습니다. 이 패턴은 사용 가능한 객체 속성을 명확하게 하여이 변수 주변의 혼란을 줄입니다. 그리고이 게임을 할 시간이 1 시간 밖에 걸리지 않기 때문에 혼란스러운 개념을 최소화해야합니다. <span><span>#score</span> {
</span> <span>position: absolute;
</span> <span>z-index: 1000;
</span> <span>left: 50%;
</span> <span>top: 5%;
</span> <span>transform: translate(-50%, 0%);
</span><span>}
</span>
간단한 볼 클래스를 만들 때이 패턴의 구조 :
새 공을 만들려면 단순히 정의한이 기능이라고합니다.<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span>></span>
</span><span><span><span><head</span>></span>
</span> <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
</span> <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
</span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
이제 나는 공을 움직이고 화면 주위로 튀어 나오고 싶습니다. 먼저, 공의 애니메이션을 만들려면 어느 정도 간격으로 업데이트 기능을 호출해야합니다. 최신 브라우저는이 목적을위한 기능을 제공합니다. 이것은 기능을 인수로 취하며 다음에 애니메이션주기를 실행할 때 전달 된 기능을 호출합니다. 이렇게하면 브라우저가 업데이트 할 준비가되면 공이 부드러운 단계로 움직일 수 있습니다. 전달 된 함수를 호출하면 페이지가로드 된 후 몇 초 만에 시간이 걸립니다. 이는 애니메이션이 시간이 지남에 따라 일관되도록하는 데 중요합니다. 게임에서 requestAnimationFrame의 사용은 다음과 같이 나타납니다.
볼이 업데이트를 마치면서 requestAnimationFrame이 기능에서 다시 호출됩니다. 이렇게하면 지속적인 애니메이션이 보장됩니다.
이 코드가 작동하지만 페이지가 완전히로드되기 전에 스크립트가 실행되기 시작하는 문제가있을 수 있습니다. 이를 피하기 위해 페이지가로드되면 jQuery를 사용하여 코드를 시작합니다.
<span><span><span><div</span> id<span>="arena"</span>></span>
</span> <span><span><span><div</span> id<span>="score"</span>></span>
</span> <span><span><span><h1</span>></span>
</span> <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
</span> <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
</span> <span><span><span></h1</span>></span>
</span> <span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
</span> <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
</span> <span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="controls-right"</span>></span>
</span> <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
</span> <span><span><span></div</span>></span>
</span><span><span><span></div</span>></span>
</span>
공의 속도 (속도)와 마지막 업데이트 이후의 시간을 알고 있기 때문에 공을 앞으로 움직이기 위해 간단한 물리학을 할 수 있습니다.
코드를 실행해 보면 공이 각도로 움직이며 화면에서 벗어나는 것을 볼 수 있습니다. 이것은 잠깐 동안 재미 있지만 공이 화면의 가장자리에서 벗어나면 재미가 멈 춥니 다. 따라서 다음 단계는 그림 7에서 구현 된대로 볼이 화면의 가장자리에서 튀어 나오게하는 것입니다.이 코드를 추가하고 앱을 실행하면 지속적으로 튀는 볼이 표시됩니다.
움직일 수있는 플레이어
<time> 이제 플레이어를 개체 할 차례입니다. 플레이어 클래스를 구체화하는 첫 번째 단계는 이동 기능이 플레이어의 위치를 바꾸는 것입니다. 측면 변수는 플레이어가 거주하는 법원의 어느 쪽을 나타내며, 이는 플레이어를 가로로 배치하는 방법을 지시합니다. 이동 함수로 전달 된 y 값은 플레이어가 움직일 수있는 정도가 될 것입니다.
</time>
그런 다음 플레이어 운동을 배치하여 플레이어 스프라이트가 창의 상단 또는 하단에 도달하면 동작을 멈출 수 있습니다.
이제 두 명의 플레이어를 만들고 화면의 적절한 측면으로 이동할 수 있습니다.
키보드 입력
이론적으로 플레이어를 움직일 수 있지만 지시 없이는 움직이지 않습니다. 왼쪽의 플레이어에게 컨트롤을 추가하십시오. 연주자를 제어하는 두 가지 방법을 원합니다 : 키보드 (PC) 사용 및 컨트롤 (태블릿 및 전화)
다양한 플랫폼에서 터치 입력과 마우스 입력 사이의 일관성을 보장하기 위해 Great Unifying Framework Hand.js (handjs.codeplex.com)를 사용하겠습니다. 먼저 헤드 섹션에서 html에 스크립트를 추가하겠습니다.
<span>body {
</span> <span>margin: 0px;
</span> <span>height: 100%;
</span><span>}
</span>