2014-09-24 75 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的方法来执行这些操作