java动态改变游戏从纵向到横向
我有多个实现Screen
的类
我想,比如说,拥有主菜单屏幕portrait
,然后是播放屏幕landscape
。是否存在动态更改orientation
的方法
我想我可以再开始一次Activity
,让播放屏幕扩展Game
。新的Activity
将intialize
播放屏幕。但是显然,您不能调用startActivity
或类似的函数,因为LibGDX
是独立于平台的
我使用Gdx.graphics.getWidth()
和Gdx.graphics.getHeight()
来对齐Sprites
和Actors
,因此它在不同的设备上看起来“正确”
我还尝试分别交换了Gdx.graphics.getWidth()
和Gdx.graphics.getHeight()
,但似乎无法正确地确定精灵和演员的位置
另外,在我的清单中我有orientation="landscape"
以下是一些更有意义的图片
这是我在^{
这是我在^{
Actors
和Sprites
的位置和大小都基于Gdx.graphics.getWidth()
和Gdx.graphics.getHeight()
。两个图像之间唯一的变化是我清单中的orientation="landscape"
和orientation="portrait"
现在我希望我的主菜单在portrait
中,但游戏所在的播放屏幕应该在landscape
中
我最初开始处理播放屏幕以及基于orientation="landscape"
设置的大小和位置,现在处理主菜单是基于orientation="portrait"
。因此,我希望动态更改方向
# 1 楼答案
这是一个很好的问题:)我得到了noone的答案(这是正确的)
如何使用Android sdk特定类设置lanscape屏幕
以及如何在libgdx项目中导入android类
首先请注意,Android类只能在Android项目中导入,不能在核心中导入。因此,我们将活动保存在依赖于平台的对象中。这是我的男朋友:
平台android实现了平台。这两个类用于访问特定于平台的对象。让我们来看看它们:
及
您还可以创建桌面启动器调用的PLatformDesktop。无论如何,将平台变量保留在类中,当您想将屏幕设置为横向时,只需调用:
# 2 楼答案
您不应该有多个
Activities
。要了解如何以编程方式切换方向,可以查看this link正如您所说,LibGDX是独立于平台的。这就是为什么您不能从“核心”代码访问Android-
Activity
。要了解如何解决这个问题,请查看Interfacing with platform specific code当您在执行
Screen
转换时调用界面更改游戏方向时,LibGDX将自动使用新值调用resize(width, height)
,您可以根据新值对齐Stage
等# 3 楼答案
我也有同样的问题,这就解决了:
出于某种原因,即使屏幕分辨率改变了,舞台也不知道这一点。所以我已经把它告诉了舞台
# 4 楼答案
只需在核心项目中创建一个接口,并声明一个具有任意名称的方法,然后在AndroidLauncher类中实现该接口。给出方法的定义
对我来说,GameOrien。java是具有方法声明的接口
在AndroidLauncher中。Android项目中的java类
当你想改变游戏的方向时,只需调用接口的setOrientation()方法。你的方向改变了