【问题标题】:Composing the game screen (LibGDX)构成游戏画面 (LibGDX)
【发布时间】:2014-02-24 17:19:36
【问题描述】:

似乎我对接下来的内容感到困惑:

  • 屏幕
  • 应用监听器
  • 游戏

我很努力,但仍然无法理解这些术语的区别。 我正在尝试做的事情: 创建一个从 Game 扩展的类(实现 ApplicationListener 或 Screen),它将是所有动作发生的区域(玩家移动、生成敌人等)。然后创建一个可能会实现 Screen 的类。分数、乘数和一些有用的文本将在那里。 然后我想在另一个班级中创建一个舞台,其中包括我的班级(屏幕上方有分数的细线和下面有游戏的区域。换句话说,我想划分游戏和文本)。

希望您明白这一点,那么我应该如何实现包含游戏、分数和包含它们的主类的类? (屏幕、ApplicationListener、游戏) 或者有一种方法可以更轻松地做到这一点?

【问题讨论】:

    标签: user-interface screen libgdx stage divide


    【解决方案1】:

    ApplicationListener 是 LibGDX 应用程序的入口点。 LibGDX 有几个后端来支持多个平台。所有这些后端都会获得一个ApplicationListener,这将是您自制的课程之一。

    Game 实际上是implements ApplicationListener,这意味着您也可以提供Game 而不是ApplicationListener。但是Game 具有更多功能,因为它是一个类而不仅仅是一个接口。它为您提供了一种将游戏拆分为多个逻辑部分的基本方法,这将使您的代码更加简洁。这些部分称为ScreensGame 将始终有一个 Screen 将被视为活动的 Game 中的所有方法实际上只是被转发到当前活动的 Screen

    Screen 是您自己实现的又一个类。它可能是 SplashScreenLoadingScreenGameplayScreen... 可能是 MainMenuScreenOptionsScreenHighscoresScreen 呢?你明白了这里的想法。每当您想切换Screen 时,您将使用Game.setScreen() 来执行此操作。这反过来会在当前的Screen 上调用Screen.hide(),在下一个Screen 上调用Screen.show()

    【讨论】:

    • 非常详细的答案。为此+1。但您也可以添加,setScreen() 在旧屏幕上调用hide(),在新屏幕上调用show()。但正如我所说,非常详细且易于理解。像往常一样(:
    • 我添加了它,即使您已经在答案中写了它。你的回答解释了我没有解释的一切。也 +1!
    【解决方案2】:

    ApplicationListener 接口为您提供所有方法,这些方法由主游戏循环调用:

    1. create() 在您的应用第一次启动时被调用。
    2. dispose() 在您的应用关闭时调用。
    3. pause() 在来电或您按下主页按钮时被调用。
    4. resume() 被调用,当你回到应用程序,pause() 被调用之后。
    5. resize() 会在您调整窗口大小时在桌面上调用。
    6. render() 在每个 Gameloop 中调用一次(每个最多 60 次)。

    扩展Game 的作用大致相同,但它已经有一些默认实现。这些默认实现在当前屏幕上调用此函数。因此,如果您启动您的应用程序 create() 会在您的 Game 类上调用,这会为您当前的 screen 调用 create()

    Screen 表示必须在 Screen 上呈现的内容。大多数时候,不同的逻辑有不同的Screens。例如MainMenuScreenGameScreenOptionsScreen。这些Screens 可以通过在Game 类中调用setScreen() 来设置。这会自动为当前的Screen 调用hide(),为新的Screen 调用show()。 我希望这对您了解 Libgdx 有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多