编写游戏画面(LibGDX)

时间:2014-02-24 17:19:36

标签: user-interface screen libgdx stage divide

似乎我对下一个东西感到困惑:

  • 屏幕
  • ApplicationListener
  • 游戏

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

希望你能得到这个想法,那么我应该如何实现游戏,分数和包含它们的主要课程? (Screen,ApplicationListener,Game) 或者有一种方法可以更容易地做到这一点?

2 个答案:

答案 0 :(得分:3)

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

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

SplashScreen是您实现的另外一个类。它可以是LoadingScreenGameplayScreenMainMenuScreen ......可能是OptionsScreenHighscoresScreen。怎么样Screen?你明白这个想法。每当您想要切换Game.setScreen()时,您都会使用Screen.hide()来执行此操作。这反过来会在下一个Screen上的当前Screen.show()Screen上调用{{1}}。

答案 1 :(得分:1)

ApplicationListener界面为您提供了主游戏循环调用的所有方法:

    第一次启动应用程序时会调用
  1. create()
  2. 当你的应用程序关闭时,会调用
  3. dispose()
  4. 当来电或您按下主页按钮时,会调用
  5. pause()
  6. 在您调用resume()后回到应用程序时,会调用
  7. pause()
  8. 在调整窗口大小时,在桌面上调用
  9. resize()
  10. 每个Gameloop都会调用
  11. render()一次(每次最多60次)。
  12. 扩展Game或多或少相同,但它已经有一些deffault实现。那些deffault实现在当前屏幕上调用此函数。因此,如果您开始在create()课程中调用Game,则会针对您当前的create()调用screen

    Screen表示必须在Screen上呈现的内容。大多数情况下,不同的Screen用于不同的逻辑。例如,MainMenuScreen一个GameScreen和一个OptionsScreen。可以通过调用Screen课程中的setScreen()来设置Gamehide()。对于新Screen,这会自动为当前show()Screen调用{{1}}。 我希望通过了解Libgdx来帮助你。