我想了解游戏类和屏幕界面之间的关系。在我正在阅读的教科书中,它指出Game类将函数从ApplicationListener委托给screen对象。这让你可以切换屏幕。我不明白,为什么会这样,它是如何工作的?
我目前的理解是:游戏从ApplicationListener(Create()、Render()等)实现生命周期方法。但您不直接从ApplicationListener实现的原因是,如果您从Game类扩展,Game类将允许您创建多个屏幕。
ApplicationListener只是一个接口,您可以直接用类实现它。游戏类正在实现ApplicationListener接口。在游戏类中,它包含一个屏幕界面,允许您更改屏幕。下面是Libgdx游戏类中的内容。
public abstract class Game implements ApplicationListener {
protected Screen screen;
@Override
public void dispose () {
if (screen != null) screen.hide();
}
@Override
public void pause () {
if (screen != null) screen.pause();
}
@Override
public void resume () {
if (screen != null) screen.resume();
}
@Override
public void render () {
if (screen != null) screen.render(Gdx.graphics.getDeltaTime());
}
@Override
public void resize (int width, int height) {
if (screen != null) screen.resize(width, height);
}
/** Sets the current screen. {@link Screen#hide()} is called on any old screen, and {@link Screen#show()} is called on the new
* screen, if any.
* @param screen may be {@code null} */
public void setScreen (Screen screen) {
if (this.screen != null) this.screen.hide();
this.screen = screen;
if (this.screen != null) {
this.screen.show();
this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
}
/** @return the currently active {@link Screen}. */
public Screen getScreen () {
return screen;
}
}
LibGDX的“核心”始终是您的ApplicationListener
类
它包含不同平台提供的所有生命周期挂钩(包括create
,dispose
等)
类Game
只是ApplicationListener
的一个实现,包含最常见的行为。对于大多数游戏来说,这个类做得很好,如果你需要一些特殊的行为,你需要重写它或者自己实现ApplicationListener
屏幕界面并不重要,但它也非常有用
它允许您将游戏分成不同的部分
例如,您可以使用菜单屏幕
和游戏屏幕
菜单屏幕显示一个简单的菜单,带有“设置”、“高分”和“播放”按钮
然后游戏屏幕
包含实际的游戏逻辑和渲染
但是,默认情况下,Screen
s不做任何事情,他们甚至不会得到关于生命周期挂钩的通知
这就是游戏
-类的作用:
游戏-类包含一个屏幕
-实例,即活动的屏幕
。然后,它将生命周期事件通知当前的屏幕
,如渲染
。然后,屏幕
可以将此事件告知汽车
如果您想切换屏幕
,只需调用游戏即可。设置屏幕(新闻屏幕)
。游戏
-类然后为当前的屏幕
调用隐藏
(您可能希望在此处处置一些资产,或者保存用户进度),然后为新的屏幕
调用显示
(您可以在此处加载一些资产并初始化新的屏幕
)。
TL;DR
应用程序列表是游戏的入口点。每个游戏只有一个ApplicationListener
,LibGDX框架会通知它生命周期事件。
屏幕是游戏的不同部分,包含不同的日志和视图(例如菜单屏幕和游戏屏幕)。代码>.
在某种程度上,游戏类是应用程序监听器接口的默认实现,并将大部分工作委托给当前的屏幕。它还包含用于切换屏幕
的日志。
我需要提高游戏屏幕加载时间的Android游戏,使用LibGdx游戏引擎。我已经实现了一些类(ImageProvider和SoundManager),它们负责预加载游戏的资产和音频部分。所以,问题是我如何加载这些游戏资源而不影响游戏屏幕之间的加载时间? 我在网上搜索了这个问题,在Stack上发现了一些类似的问题。 如何减少libgdx中所有资产的加载时间 LibGDX中的AssetManager
我们正在使用libgdx开发一款游戏,我们希望能够切换屏幕。我制作了一个GameOverScreen,它实现了Screen: 我的问题是我不知道如何在我的主课上设置屏幕。我看到的大多数示例都显示了一个扩展游戏的主类(com.badlogic.gdx.Game)。但我们的主类实现ApplicationListener,不扩展游戏: 因此,我不能使用来自Game类的setScreen方法。所以我如何能
我试图改变Libgdx屏幕之间的动画。我想写我的自定义动画(淡入淡出等)。有人能给我个线索吗?我似乎在Libgdx代码中找不到转换的实现。
问题内容: 大家好,我仍在从事这个libgdx项目的工作,我试图找出将屏幕切换到游戏屏幕的最佳方法。现在,当单击一个按钮时,我需要它来切换到游戏屏幕。我已经看到了一些扩展游戏类的实现方式,但是我不确定这里最好的方法是什么。如果您看到一些可以改进的代码,请告诉我。 这是主要的应用程序类: 问题答案: 这就是我始终执行屏幕切换的方式: 首先,主类需要扩展Game(From ),然后您需要具有一个新的t
大家好,我仍然在做这个libgdx项目,我正在努力找出最好的方法来改变我的游戏屏幕现在,当一个按钮被点击时,我需要它转换到游戏屏幕。我见过一些扩展game类的实现,但我不确定从这里开始最好的方法是什么。如果你看到一些可以改进的代码,请让我知道。 以下是主要的应用程序类:
我在 Libgdx 游戏上的触摸接收器有问题。 在我的玩家主页上,我有这个: 当我运行我的游戏时,除了触摸监听器有时工作正常,但是在触摸几秒钟后。 Gdx.app.log(“已点击”、“已触摸”);通过触摸发射。 但是Gdx.app.log("点击了","很棒");或者Gdx.app.log("Clicked "," nooooooooooo ");我必须执行长按,直到触摸被触发。 谢谢 我添加了