2012-10-26 2 views
1

내가 960x640 픽셀 크기의 이미지를 설정하려고를 mantaining하지 않고, 화면 크기를 채우기 위해 이미지 크기 조정 ... 내 장치는 854x480 픽셀 .. 내가 무슨 짓을Andengine, 화면 비율

로드하는 것입니다있다 스프라이트, 다음 장면의 배경으로 설정 ...

sprite = new Sprite(0, 0, fieldITexture, BaseActivity.getSharedInstance().getVertexBufferObjectManager()); 
setBackground(new SpriteBackground(sprite)); 

그러나 화면의 obviusly 그 이미지가 점점 외부, 난 인 setScale와 setScaleCenter을 사용하려고하지만 난이 이미지를 참조하십시오 ... 어떤 결과를 제공하지 않습니다 : http://db.tt/pcuJa4vE

카메라 크기를 설정하려면 다음을 수행하십시오. d 기기를 사용하는 경우 :

final Display display = getWindowManager().getDefaultDisplay(); 
CAMERA_WIDTH = display.getWidth(); 
CAMERA_HEIGHT = display.getHeight(); 
mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); 

그래서 축구 필드를 화면 크기로 조정하려면 어떻게해야합니까? 나는 측면에 대해 걱정하지 말아

+0

왜 display.getWidth()를 사용합니까? 스케일링 메카에서 빌드를 사용할 수 있습니다 – Tobrun

+0

어떻게 그럴 수 있습니까? – BamsBamx

+1

다른 Sprite의 생성자를 사용하고 텍스처 영역의 너비/높이를 사용하는 대신 카메라 크기에 스프라이트 너비와 높이를 지정할 수 있다고 생각합니다. –

답변

4

device.getWitdh()와 device.getHeight을() 폭과 높이를 고정 사용하십시오 사용하지 마십시오

public final static int CAMERA_WIDTH = 720; 
public final static int CAMERA_HEIGHT = 480; 
AndEngine 당신을 위해 모든 이미지를 확장 할 수

은 때때로 당신이 볼 것 크기 조정 때문에 화면 가장자리 주변에 검은 색 막대가 나타납니다. 그러나 거의 눈에 띄지 않습니다.

@Override 
public EngineOptions onCreateEngineOptions() 
{ 
    camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
    EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), camera); 
    return engineOptions; 
} 
+0

그래, 내가 andengine 포럼에서 읽었지만 그 일은 내가 그 검은 색 막대를 갖고 싶지 않다는 것입니다 ... 내가 뭘 할 수 있을까 ?? 감사합니다 – BamsBamx

+0

이것은 일하는 방법이 아니지만 다음과 같은 시나리오로 달성 할 수 있습니다 : 위와 같이 고정 된 높이와 witdh를 사용하십시오 -> 이것은 출발점이 될 것입니다. 시작점과 장치 구성의 비율 차이를 계산합니다 (device.getWidth()). 이 비율로 전체 장면 또는 장면 내의 모든 이미지의 크기를 조절하십시오. – Tobrun

4

그냥 거기에 넣어, 나는 거기에 2 개의 주요 비율 (5 : 3 및 4 : 3) 장치에 대한 믿습니다. 대부분의 다른 것들은 4 : 3보다 5 : 3에 더 가깝습니다 (그래서 5 : 3이 기본값이어야합니다).

나는 모든 화면 크기를 거치지 않고도 가능한 최상의 그래픽을 지원하고자했습니다. 그래서 나는이 2 가지 비율을 취했습니다.

지금 나는이처럼 내 설치가 만든 :

String fileFolderForRatio = ""; 
    int CAMERA_WIDTH = 1280; 
    int CAMERA_HEIGHT = 768; 

@Override 
    public EngineOptions onCreateEngineOptions() { 
     instance = this; 

     // getting the device's screen size 
     Point screenSize = getScreenSizeByRatio(); 
     CAMERA_WIDTH = screenSize.x; 
     CAMERA_HEIGHT = screenSize.y; 


     mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

     final EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, 
       new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); 
     engineOptions.getAudioOptions().setNeedsSound(true); 
     engineOptions.getAudioOptions().setNeedsMusic(true); 

     return engineOptions; 

    } 

및 기능을 정의

public Point getScreenSizeByRatio() 
    { 
     final Display display = getWindowManager().getDefaultDisplay(); 

     double sw = display.getWidth(); 
     double sh = display.getHeight(); 
     double ratio = sw/sh; 
     if (sw < sh) ratio = sh/sw; 

     Point screenPoints = new Point(); 
     if (ratio > 1.3 && ratio < 1.4) 
     { 

      fileFolderForRatio = "1024x768"; 
      screenPoints.x = 1024; 
      screenPoints.y = 768; 

     } else 
     { 

      fileFolderForRatio = "1280x768"; 
      screenPoints.x = 1280; 
      screenPoints.y = 768; 

     } 

     Debug.e("RATIO", fileFolderForRatio); 

     return screenPoints; 
    } 
(폭과 높이에 대한 검사에주의를, 때로는 AndEngine 주위 그것을 다른 방법을 감지)

1024x768 폴더와 1280x768 폴더에 그래픽 (해당 화면 크기에 맞게 최적화 됨)을 넣으십시오.

이렇게하면 세미 정적 스크린 샷을 사용할 수 있습니다. AndEngine이 나머지 부분의 크기를 조정합니다.

(즉, 스프라이트의 화면 위치에 대해 당신이.는 2 비율의에 대해 동일한 아니다으로 확인 을 가지고 있지만거야 제발하지가 어려운 아니에요 이오스 개발 (아이 패드 및 아이폰)

희망에서 오는 새로운 RatioResolutionPolicy (폭, 높이) 과 : 그것은 교체

+0

사실은 Galaxy Nexus에서 작동하지만 실제로는 잘 이해하지 못했습니다! –

+0

도움이 되니 기쁩니다. 그것은 다소 2 개의 표준을 정의하고 그 표준에 가장 가까운 비율을 부여합니다. 그 비율에 따라 올바른 폴더에서 파일을 선택합니다. – renevdkooi

-1

하는 데 도움이됩니다. 새로운 FillResolutionPolicy()를

이 전체 화면을 채우고