1

私のゲームのすべてのレイヤーは、比率2:1の rootLayer に対してスケーリングおよび配置されます。

たとえば、Java バージョンでは、次のようにしました。

Config config = new Config();
config.width = 800;
config.height = 400;
JavaPlatform platform = JavaPlatform.register(config);

Android の場合、rootLayer を変更して最大幅を可能な限り大きくし、高さ = 幅 / 2 にします。

800x480 の解像度 ( Google Nexus Sなど) の場合、rootLayer は 800x400 で、(0, 40) に配置されます。

それは可能ですか?

4

1 に答える 1

0

私はついにそれを行う方法を見つけました。playn 開発者がここを通過すると、それが最善の方法かどうか教えてくれるかもしれません。

GameActivityのsetContentViewメソッドをオーバーライドします。親では、メソッドは GameViewGL をメイン レイアウトに追加します。そこで、コードをコピーして修正し、サイズと位置の仕様を追加しました。

  @Override
  protected void setContentView(GameViewGL view) {
    BitmapDrawable bmp = new BitmapDrawable(getResources(), "");
    getWindow().setBackgroundDrawable(bmp);
    LinearLayout layout = new LinearLayout(this);
    layout.setBackgroundColor(0xFFFF0000);
    layout.setGravity(Gravity.CENTER);
    layout.addView(view);
    LayoutParams params = new LayoutParams(
        LayoutParams.MATCH_PARENT,
        LayoutParams.MATCH_PARENT
    );
    Point size = new Point();
    getWindowManager().getDefaultDisplay().getSize(size);
    if (size.y > size.x) {
        params.width = size.y;
        params.height = size.y / 2;
        layout.setY((size.x - size.y / 2) / 2);
    } else {
        params.width = size.x;
        params.height = size.x / 2;
        layout.setY((size.y - size.x / 2) / 2);
    }
    getWindow().setContentView(layout, params);
  }
于 2013-03-06T13:58:35.373 に答える