2009-09-17 7 views
3

나는 PHP/Zend Framework 및 Facebook JavaScript로 게임을 작성하고 있습니다. 게임 보드가 스크롤 창에 표시됩니다. 전체 게임 보드를 보려면 사용자는 스크롤해야합니다. 게임의 각 단계는 페이지를 새로 고침하므로 사용자가 다른 단계로 이동하면 스크롤 위치가 손실되고 창은 기본 위치로 돌아갑니다. 페이지가 새로 고쳐지기 전의 위치로 스크롤 창이 자동으로 돌아가는 방법이 있는지 궁금해서 사용자가 자신이 있던 위치로 다시 스크롤하지 않아도됩니다. 감사!페이지 새로 고침 후 스크롤 창 위치를 반환하는 방법이 필요합니다.

답변

3

링크 기반 게임을 만드는 경우 AJAX를 사용하여 클릭 데이터를 서버로 보내고 처리 한 다음 페이지를 새로 고치지 않고 사용자에게 반환합니다.

이렇게하면 JS를 사용하여 페이지 주위를 스크롤하지 않아도되고, 게임을 훨씬 빠르고 즐겁게 즐길 수 있습니다.

+0

일에 새로 고칩니다. 페이지 자동 스크롤은 믿을 수 없을만큼 귀찮다. –

+0

나는 듣고, 나는 완전히 동의한다. 문제는 내가 AJAX를 처음 접하는 것이다. 내 응용 프로그램에 AJAX 코드가 있지만 AJAX에서 전체 응용 프로그램을 작성하는 것은 빈번한 백엔드 호출이있는이 거대한 프론트 엔드 응용 프로그램이 될 것처럼 보입니다. Zend Framework에서 내 앱을 구성하는 것에 익숙하지만 큰 프런트 엔드 앱을 구성하는 방법에 대한 단서가 없으므로 내가 아는 것을 고수하고 있습니다. –

2

Window.name 또는 쿠키에서 onunload (또는 각 스크롤 이벤트 후)의 위치를 ​​저장 한 다음 페이지가로드 될 때 해당 지점으로 스크롤합니다.
그러나 Ajax 솔루션은 여러분이하는 일에 더 나은 접근 방식입니다.

+0

이 솔루션을 사용해 보았지만 Facebook JS를 사용 중이기 때문에 작동하지 못했으며 태그에 액세스 할 수 없어 onload/onunload를 구현할 수 없습니다. onload에 대한 해결 방법을 찾았지만 onunload에 대한 해결책은 찾지 못했습니다. 나는 현재 스크롤 위치로 쿠키를 업데이트하기 위해 setInterval()을 사용했지만 FB가 쿠키에 대한 액세스를 비활성화한다는 것을 발견했습니다. Ajax는 대부분의 응용 프로그램을 다시 작성해야하므로 시각. 몇 초마다 스크롤 좌표를 백엔드로 보내려면 setInterval() 및 ajax 호출을 사용하는 것이 좋습니다. 이게 보인다 ... –

+0

모든 1-5 초마다 모든 사용자로부터 이러한 아약스 호출을 받기 위해 서버를 압도 할 것 같은가? –

+0

정말 서버에 따라 다릅니다 ... 스크립트 태그 내부에서 동적으로 본문에 이벤트를 추가 할 수 있습니다. 줄에 뭔가 : body.onload = f; // f는 함수입니다. 물론 올바른 구문을 찾아야합니다. –

0

사용 <a name="game">gamePage.html#game

+0

그러나 그것은 내가 '타일링 된'게임 보드라고 가정하고있는 모든 클릭 가능 요소에 앵커를 추가하는 것을 포함합니다. 그건 닻을 많이 잡아 먹을거야. – BraedenP

+0

PHP는 원하는 위치에 단일 앵커를 추가 할 수 있습니다. –

+0

아니요 ... 각 스크롤 이벤트 이후에 앵커를 만들어야합니다. 두통이 너무 많이 들리는데 페이지를 새로 고치지 않고 페이지의 URL을 변경할 수 있다고 생각하지 않습니다. –