Я работаю над игрой на Java. Я использую библиотеку libGDX. Я, по-видимому, использую схему дизайна .Схема разработки стратегии - остановка метода
Вот мой класс SpawnMapScreen. Он расширяет BaseScreen.
public void render(float delta) {
super.render(delta);
npcTalking.update(Gdx.graphics.getDeltaTime());
npcRunning.update(Gdx.graphics.getDeltaTime());
renderer.getSpriteBatch().begin();
WorldVars.player.draw(renderer.getSpriteBatch());
npcTalking.draw(renderer.getSpriteBatch());
npcRunning.draw(renderer.getSpriteBatch());
renderer.getSpriteBatch().end();
}
Вот мой класс BaseScreen. Он реализует экран.
public void render(float delta) {
Gdx.graphics.setTitle("AHH V. " + version + " || Running at a mighty " + Gdx.graphics.getFramesPerSecond() + "fps"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
WorldVars.player.update(Gdx.graphics.getDeltaTime());
renderer.setView(camera);
renderer.render();
camera.position.set(WorldVars.player.getX() + WorldVars.player.getWidth()/2, WorldVars.player.getY() + WorldVars.player.getHeight()/2, 0);
camera.update();
spriteBatch.begin();
font.draw(spriteBatch, version, 0, 100);
spriteBatch.end();
}
Вот моя проблема. В моем классе BaseScreen я хочу проверить, нажата ли клавиша escape. Если это так, я хочу переключать экраны. Дело в том, что когда я вызываю метод setScreen(Screen screen)
экземпляра игрового экземпляра, он меняет экран, но продолжает процесс в методе рендеринга. Это выглядит следующим образом:
- SpawnMapScreen визуализируем метод (флоат дельта) называется
- В SpawnMapScreen визуализируем (флоат дельта) метод, BaseScreen визуализируем метод (флоат дельта) называется
- В BaseScreen, он проверяет если нажата клавиша эвакуации, если да, то она меняет экран
- Продолжить метод рендеринга SpawnMapScreen (float delta).
Как должен работать: метод
- SpawnMapScreen визуализируем метод (флоат дельта) называется
- В SpawnMapScreen визуализируем (флоат дельта) метод, BaseScreen визуализируем (флоат дельта) называется
- В BaseScreen, он проверяет, является ли клавиша выхода нажата, если да, то он изменяет экран
- не продолжайте де SpawnMapScreen визуализируем (поплавок дельта) мето d
Есть ли способ сделать так?
Хорошо, можете ли вы использовать метод обнаружения esc-ключа в вашем классе SpawnMapScreen (поскольку он получен из BaseScreen)? – webuster
Как вы переключаете экраны? – Lestat
@webuster Я не хочу, потому что SpawnMapScreen - не единственный экземпляр BaseScreen. У меня также есть cave1Screen, cave2Screen и т. Д. Я не хочу копировать один и тот же код всего вокруг – Ferdz