1

我正在尝试设置大小为 960x640 像素的图像...我的设备有 854x480 像素..

我所做的是加载精灵,然后设置为场景背景......

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

但显然该图像正在屏幕之外,我尝试使用 setScale 和 setScaleCenter,但我没有给出任何结果......请参阅这张图片:http ://db.tt/pcuJa4vE

要设置相机尺寸,我根据设备完成了它:

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);

那么,我该怎么做才能将足球场缩放到屏幕尺寸呢?我不在乎方面

4

3 回答 3

4

只是把它放在那里,我相信这些设备有 2 个主要比例(5:3 和 4:3)。大多数其他人比 4:3 更接近 5:3(所以 5:3 应该是默认值)。

我想支持最好的图形,而不必经历所有的屏幕尺寸。所以我采用了这两个比率。

现在我做了这样的设置:

定义

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;

    }

和功能(注意检查宽度和高度,有时 AndEngine 会反过来检测)

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;
    }

将图形(针对该屏幕尺寸进行了优化)放在 1024x768 文件夹和 1280x768 文件夹中。

这样你就有了半静态的屏幕尺寸。AndEngine 将为您调整其余部分的大小。

(请不要对精灵的屏幕定位进行检查,因为 2 的比例不一样。但是来自 Ios 开发人员,这并不难(iPad 和 iPhone)

希望能帮助到你

于 2012-11-08T04:08:26.677 回答
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;
}
于 2012-10-26T19:09:12.043 回答
-1

Replace: new RatioResolutionPolicy(WIDTH, HEIGHT) with: new FillResolutionPolicy ()

this fills up the whole screen.

于 2014-11-03T20:34:44.303 回答