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がデフォルトである必要があります)。

すべての画面サイズを経由せずに、可能な限り最高のグラフィックスをサポートしたかったのです。だから私はそれらの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;

    }

および関数(幅と高さのチェックに注意してください。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

置換:新しいRatioResolutionPolicy(WIDTH、HEIGHT)を次のように置き換えます:new FillResolutionPolicy()

これは画面全体に表示されます。

于 2014-11-03T20:34:44.303 に答える