2011-05-13 9 views
4

여러 화면 해상도를 지원하기 위해 libgdx를 어떻게 지원할 수 있습니까? 내가 좋아하는 매개 변수의 경우 문에서도를 사용하는 HTC 문신에 내 응용 프로그램 작업을했다 :Android libgdx 큰 화면 해상도

if (Gdx.input.getX()==40) { 

더 큰 화면에이 작품을 만들기위한 좋은 알고리즘은 무엇입니까?

publis static int translatex() { 
    float p = (float)Gdx.graphics.getHeight()*340; 
    return (int) p*Gdx.input.getX(); 
} 

(340)는 HTC 문신 날에 의해 사용되는 기본 X (내 휴대 전화에서 X 해상도)입니다 : 나는이 있지만 결과없이 시도했다. ..... 절대 값으로 큰 화면을 지원하는 함수를 어떻게 만들 수 있습니까? if 문을 변경하고 싶지 않습니다.

답변

14

꽤 쉽습니다. 당신은 기본적으로 네이티브 해상도 전체 프로그램을 구축하지만, 위치 및 텍스처 크기를 다루는 모든 일에 이런 일이 :

private void resize() 
{ 
    float x = Gdx.graphics.getWidth(); 
    float y = Gdx.graphics.getHeight(); 

    float changeX = x/assumeX; //being your screen size that you're developing with 
    float changeY = y/assumeY; 

    position = new Vector2(position.x * changeX, position.y * changeY); 
    width = startWidth * changeX; 
    height = startHeight * changeY; 
    bounds = new Vector2 (position.x, (Gdx.graphics.getHeight() - position.y) - height); 

} 

기본적으로 당신이 모든 객체가 생성 복용하고 무언가를 통해 실행하고있는 귀하의 해상도에서 x/y 값의 변화에 ​​따라 증가/감소합니다. 네이티브에서 더 멀리 떨어져있을수록 더 커집니다. 무언가를 확인하거나 어딘가에 넣을 때, 항상 원하는 해상도로 코드화하십시오. 그러나 그것을 표시하거나 프로그램의 나머지 부분과 상호 작용하게하기 전에 크기 조정 기능을 통해 실행하십시오.

+0

구현 된 예는 libgdx wiki의 my StringBuild 튜토리얼을 참조하십시오. – Remm

+0

startWidth 란 무엇입니까? 크기 조정 함수에는 int width, int height의 두 매개 변수가 있습니다. 그 startWidth는 width입니까? – Felix

+0

시작 너비/높이는 크기를 조정하기 전에 기본적으로 텍스처 크기가됩니다. 새로운 너비와 높이는 changeX와 changeY에 대한 증가입니다. 경계는 반대 구석의 위치를 ​​유지하는 벡터 2 일 뿐이므로 대상의 경계를 쉽게 알 수 있습니다. 생성 될 객체를 호출 -> 위치, 너비, 높이와 같은 모든 초기 값을 얻음 -> resize() 함수로 변환 -> 화면에 텍스처를 그립니다. 우리는 텍스쳐의 기본 크기를 알 필요가있을 때 textureRegions를 사용할 때 높이와 높이를 분리하여 유지합니다. 제대로 늘릴 수 있도록 – Remm

3

보다 세련된 해결책을 http://www.java-gaming.org/index.php?topic=25685.0에서 확인하십시오 (해당 솔루션에 대한 Nate의 의견 참조).

또한 scene2d을 사용하는 경우 현재 (libgdx 0.9.6) stage.setViewport 메소드에이 기능이 있어야하지만 실제로 예상대로 동작하지 않습니다.

업데이트 : setViewPort가 고정되어 예상대로 작동합니다.