2014-09-24 4 views
0

Я пишу экран с двумя актерами, я хочу заменить одну страницу на другую после события. Но после удаления первой страницы актера со сцены и добавить вторую страницу актера, я не вижу ни первого, ни второго страницы актера :(libgdx - не отображается актер, добавленный после удаления другого актера

class PageScreen extends Screen { 

    def createPage(n:Int):Page = ... 

    ... 

    var stage:Stage = _ 
    var page:Page = _ // Page extends WidgetGroup 
    var menu:Menu = _ // Menu extends WidgetGroup 

    // mbassador subscribe to events 
    bus.subscribe(this) 

    @Handler 
    def handleEvent(message: TailBookEvent): Unit = { 
    message match { 
     case ForwardPageButtonPressedEvent(_) => 
     stage.getActors.removeValue(page, true) // I tried everything 
     stage.getRoot.removeActor(page) // I tried everything 
     page = createPage(4) 
     page.setDebug(true) 
     stage.addActor(page) // I tried everything 
     stage.getRoot.addActor(page) // I tried everything 
     stage.getActors.add(page) // I tried everything 
     ... 
    } 
    } 

    override def show(): Unit = { 
    stage=new Stage(new ScreenViewport()) 
    page = createPage(1) 
    menu = new Menu(page.pageAtlas) 
    stage.addActor(page) 
    stage.addActor(menu) 
    Gdx.input.setInputProcessor(stage) 
    } 

    override def render(delta: Float): Unit = { 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT) 
    if (stage != null) { 
     stage.act(delta) 
     stage.draw() 
    } 
    } 

    override def resize(width: Int, height: Int): Unit = { 
    if (stage != null) stage.getViewport().update(width, height, true) 
    menu.setBounds(0, 0, width, height) 
    page.setBounds(0, 0, width, height) 
    } 

    override def dispose(): Unit = { 
    if (stage != null) stage.dispose() 
    } 

    ... 

} 

даже этот код удаляет все с экрана:

stage.clear() 
    page = createPage(page.pageNumber+1) 
    page.setDebug(true) 
    stage.addActor(page) 
    stage.addActor(menu) 

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

ответ

0

необходимо выполнить эти действия с помощью метода Gdx.app.postRunnable

Смежные вопросы