2014-11-20 3 views
0

Я использую несколько экранов для своей Java-игры LibGdx, и у меня возникают проблемы с запуском экрана и экраном смерти, отображающим фон. Фон находится в нужном месте, как я проверял. Main.java (сама игра) работает, но ничего больше. Единственное, что работает на экране запуска и смерти - это входные данные, такие как ввод с клавиатуры.LibGdx Background not Rendering

Код: FishGame.java

package us.webco.fish; 

import com.badlogic.gdx.Game; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 

public class FishGame extends Game { 
public SpriteBatch batch; 

public void create() { 
    batch = new SpriteBatch(); 
    this.setScreen(new StartScreen(this)); 
} 

public void render() { 
    super.render(); 
} 

public void dispose() { 
    batch.dispose(); 
} 

}

StartScreen.java (пустые функции вырезать)

package us.webco.fish; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.Input.Keys; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.graphics.Texture; 
import com.badlogic.gdx.graphics.g2d.Sprite; 

public class StartScreen implements Screen{ 
private Texture backgroundImage; 
private Sprite backgroundToSprite; 
final FishGame game; 

public StartScreen(final FishGame gam) { 
    game = gam; 
    backgroundImage = new Texture(Gdx.files.internal("../android/assets/startScreen.jpg")); 
    backgroundToSprite = new Sprite(backgroundImage); 
    backgroundToSprite.setSize(Main.width, Main.height); 
} 

@Override 
public void render(float p) { 
    p = 1/60f; /* FPS */ 
    Gdx.gl.glClearColor(0.4f,0.4f,0.7f,1.0f); /* Setting a default background color */ 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); /* Rendering purposes */ 

    game.batch.begin(); 
     game.batch.draw(backgroundToSprite, Main.width, Main.height); 
    game.batch.end(); 

    if(Gdx.input.isKeyPressed(Keys.X)) { 
     System.out.println("Start Game"); 
     game.setScreen(new Main(game)); 
     dispose(); 
    } 
    if(Gdx.input.isKeyPressed(Keys.Z)) { 
     System.out.println("Game has been quit!"); 
     Gdx.app.exit(); 
    } 

} 

Main.java использует game.batch тоже. Я не уверен, почему он не работает, поскольку я следил за учебником LibGdx, заблаговременно.

ответ

0

попробовать этот

backgroundImage = new Texture(Gdx.files.internal("startScreen.jpg")); 

EDIT: spriteBatch.draw (..., position.x, position.y);

Ваша ширина использования и высота позиции, вы не из экрана

+0

Спасибо, это отсортировано! Я не могу поверить, что я это сделал, ха-ха! –

0

ли вы установить положение камеры правильно?

Вы обновляете камеру и устанавливаете матрицу проекций на свой SpriteBatch?

+0

Мне не приходилось использовать камеру раньше, я должен ее использовать? –

+0

Вам определенно нужно будет использовать камеру в какой-то момент (было бы намного проще). Я думаю, ваша проблема связана с смещением экрана, как указано ниже. Здесь вы можете найти очень подробный учебник для орфографической камеры (то есть тот, который вам нужен). Если у вас возникнут какие-либо проблемы с внедрением/пониманием, не стесняйтесь ничего просить, я вам поможем. –