2014-12-09 6 views
0

저는 Scene2d를 처음 접했기 때문에 약간 혼란 스럽습니다. 우리는이 두 개의 클래스가 상상해 :화면 또는 게임 클래스의 스테이지?

public GameScreen implements Screen { 

//override methods 
} 

public GameX extends Game { 

//override methods 
} 

을 두 가지 방법이 렌더링 및 크기 조정, 그래서 내 질문은 같은 방법 :

단계/배우와 Box2D의 물건을 포함하는 가장 좋은 방법은 모두의 무엇입니까?

+1

중요하지 않습니다. 간단한 게임을 가지고 있다면 게임에 모든 것을 넣을 수 있습니다. 게임을 별도의 화면으로 분해하려면 해당 항목을 Screen에 넣고 Game 클래스를 사용하여 화면 사이를 전환 할 수 있습니다. – Tenfour04

+0

@ Tenfour04 답변에 감사드립니다! 나는 그 피드백이 코딩을 계속하기를 원했을 뿐이었다. – niarb

+0

당신이 사물에 대해 명확하도록 문제가있다. "게임"을 사용하면 다른 화면을 연결할 수 있습니다. 이 접근법을 찾으십시오. LoadingScreen, GoodbyeScreen 등의 파생 된 화면 클래스는 화면 특정 logi를 캡슐화 할 수 있습니다. Game :: setScreen을 보라. 모든 것이 명확해질 것입니다. Stage 클래스는 액터를 포함하는 데 사용됩니다. 스테이지를 설정할 때 사용되는 스프라이트 배치 및 뷰포트를 정의 할 수 있습니다 (예 : hudStage = new Stage (hudViewport, hudSpriteBatch); – RichieHH

답변

0

Game 클래스는 실제로 게임의 핵심입니다. 메서드가 GameLoop에 의해 호출되거나 일부 이벤트가 발생하는 경우
모든 게임에는 MenuScreen, PlayScreen, OptionScreen 또는 CreditsScreen과 같이 복수 Screen 개가있을 수 있습니다.
그래서 Screen은 게임의 일부와 같은 것을 억누르고 있습니다.
Game 클래스는 한 번에 하나의 활성 Screen을 가질 수 있으며 Screen은 자신의 렌더링에서 reder()을 호출합니다. pause()resume()에 대해서도 같은 계산입니다.
Screen을 변경하면 Screen에 대해 Screenshow()에 대해 hide()이 호출됩니다.

그래서 귀하의 질문에 대한 답변입니다, 당신의 Game 정말 간단하고 다른 Screen의를 포함하지 않는 경우, 당신은 Game 클래스의 사용 내부의 Stage을 넣어 당신의 유일한 Screen처럼 Game 클래스를 처리 할 수있다.
Screen 이상이있는 경우 Screen 인터페이스를 사용하고 Screen 클론 중 하나에 Stage을 설정해야합니다.

0

Game 클래스는 화면 setScreen 사이를 전환 할 수 있기 때문에 둘 다 사용합니다. 일반적으로로드가 완료되면 loadingScreen을로드하여 필요한 자산을로드합니다. mainMenuScreen으로 전환합니다. 하지만 게임 클래스에 몇몇 배우를 배치하고 거기에서 화면 구현을로드 할 수는 있습니다. 실제로 중요하지 않습니다.

깨끗한 접근을 위해 나는 단지 Gamecreate 메서드에서 로딩 화면을 호출하고 거기에서 빌드하는 것이 좋습니다. 각 게임마다 메뉴와 게임 화면이 필요합니다.