2014-02-05 2 views
0

Я создал супер класс ничего в методе визуализации:Stage не втянуться

public class SuperClass implements InputProcessor { 

    public SuperClass(MyGame game) { 

    } 

    public void render() { 

    } 

    // InputProcessor overriden methods here 
} 

В подклассе я переопределить метод визуализации:

public class SubClass extends SuperClass { 

Stage stage; 

public SubClass(MyGame game) { 
    super(game); 

    stage = new Stage(0, 0, false); 

    skin = new Skin(Gdx.files.internal("data/uiskin.json")); 

    Gdx.input.setInputProcessor(stage); 

    Image image = new Image(new Texture(Gdx.files.internal("bg.png"))); 
    image.setPosition(0, 0); 
    image.setWidth(800); 
    image.setHeight(480); 
    stage.addActor(image); 

} 

@Override 
public void render() { 

    stage.act(Gdx.graphics.getDeltaTime()); 

    stage.draw(); 

} 

}

Но этап не нарисован. Я знаю это, потому что я ожидаю увидеть фоновое изображение, но его просто пустой экран.

Что я здесь делаю неправильно?

ответ

0

Строка в SubClass конструктор должен быть:

stage = new Stage(800, 480, false); 

или вы также можете сделать это:

stage = new Stage() 

, но тогда вы должны установить видовой экран, stage.setViewport(float, float, boolean) в resize(float, float).

1

Вы должны вызвать метод визуализации SuperClass в методе визуализации MyGame.

+0

Почему? Как вы даже знаете, что делает SuperClass? – noone

+0

@antiamoeba, как я уже сказал, метод рендеринга SuperClass не имеет ничего в этом. –

0

Ваш метод render() называется каждым игровым циклом? Обычно я создаю объект, который расширяет игру и устанавливает экран.

class MyGame extends Game { 

    @Override 
    public void create() { 

    setScreen(new MainScreen()); 
    }  
} 

В классе В начале который реализует интерфейс экрана я могу создать свой этап:

class MainScreen implements Screen { 

    Stage stage = new Stage(0, 0); 


    @Override 
    public void dispose() { 
     stage.dispose(); 

    } 

    @Override 
    public void hide() { 

    } 

    @Override 
    public void pause() { 

    } 

    @Override 
    public void render(float delta) { 


     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 


     stage.act(Gdx.graphics.getDeltaTime()); 
     stage.draw(); 


    } 

    @Override 
    public void resize(int width, int height) { 

    } 

    @Override 
    public void resume() { 
    } 

    @Override 
    public void show() { 
    stage = new Stage(0, 0, false); 

     skin = new Skin(Gdx.files.internal("data/uiskin.json")); 

     Gdx.input.setInputProcessor(stage); 

     Image image = new Image(new Texture(Gdx.files.internal("bg.png"))); 
     image.setPosition(0, 0); 
     image.setWidth(800); 
     image.setHeight(480); 
     stage.addActor(image); 

    } 

} 

С помощью этого кода метод визуализации() должен быть вызван в каждом цикле игры.

+0

Метод визуализации вызывается в каждом цикле. Я пробовал то, что вы предлагали раньше, и это сработало, но я хотел использовать другой подход для этого нового проекта. –