gpt4 book ai didi

java - 动态地将游戏从纵向更改为横向

转载 作者:太空狗 更新时间:2023-10-29 16:38:34 24 4
gpt4 key购买 nike

我有多个实现 Screen 的类。

我想说,主菜单屏幕纵向,然后是播放屏幕 横向。无论如何动态改变方向

我想我可以启动另一个 Activity 并让 Play Screen 扩展 Game。新的 Activity初始化 Play Screen。但显然你不能调用 startActivity 或类似的东西,因为 LibGDX 是平台独立的。

我使用 Gdx.graphics.getWidth()Gdx.graphics.getHeight() 来对齐 SpritesActor,所以它在不同的设备上看起来“正确”。

我也尝试过分别交换 Gdx.graphics.getWidth()Gdx.graphics.getHeight(),但似乎无法获得 Sprite 和 Actor 的位置正确。

此外,在我的 list 中我有 orientation="landscape"

这里有一些图像应该更有意义。

所以这是我在横向中的主菜单: enter image description here

这是我在纵向中的主菜单:

enter image description here

ActorSprites的位置和大小都是基于Gdx.graphics.getWidth()Gdx.graphics .getHeight()。两张图片之间唯一发生变化的是 list 中的 orientation="landscape"orientation="portrait"

现在我希望我的主菜单处于portrait,但是Play Screen,游戏正在进行的地方,应该是landscape

我最初着手处理播放屏幕以及根据orientation="landscape"设置的大小和位置,现在我正在处理主菜单 它基于orientation="portrait"。这就是我为什么要动态改变方向的原因。

最佳答案

这是一个很好的问题 :) 我开发了没有人的答案(这是正确的)

如何使用 Android sdk 特定类设置横向屏幕?

以及如何在 libgdx 项目中导入 android 类?

首先要注意的是Android类只能在android工程中导入,不能在core中导入。所以我们将 Activity 保存在依赖于平台的对象中。这是我的 AndroidLauncher:

import android.os.Bundle;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.mygdx.game.MyGdxGame;
import com.mygdx.game.util.Platform;

public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
PlatformAndroid platform = new PlatformAndroid();
platform.setActivity(this);
initialize(new MyGdxGame((Platform) platform ), cfg);
}

}

PlatformAndroid 实现平台。这两个类用于访问特定于平台的对象。让我们看看它们:

public interface Platform {
public void SetOrientation(String string);
}

package com.mygdx.game.android;
import android.app.Activity;
import android.content.pm.ActivityInfo;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.mygdx.game.util.Platform;

public class PlatformAndroid extends AndroidApplication implements Platform {
private Activity activity;
@Override
public void SetOrientation(String string) {
if (string == "landscape"){
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
public void setActivity(Activity activity){ this.activity = activity; }
}

您还可以创建一个由桌面启动器调用的 PLatformDesktop。无论如何,在你的类中保留平台变量,当你想将屏幕设置为横向时,只需调用:

 platform.SetOrientation("landscape");

关于java - 动态地将游戏从纵向更改为横向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com