我一直试图让我的应用从一个场景转换到另一个场景。我做的是onLoadScene()我将它指向一个有一个场景的方法,我想要做的是设置另一个场景,这是另一种方法......但我得到的是第一个场景中的精灵卡在上面屏幕!
有人可以帮助我教我如何在同一个班级中从一个场景转换到另一个场景。
这是我的代码:
@Override
public Scene onLoadScene() {
return splashGame();
}
private Scene splashGame(){
final Scene sceneGameSplash = new Scene();
sceneGameSplash.setBackgroundEnabled(false);
System.out.println("pls work 1");
final Sprite splashSprite = new Sprite(0,0, this.gameSplashScreenRegion);
sceneGameSplash.registerUpdateHandler(new TimerHandler(3f, true, new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {
sceneGameSplash.unregisterUpdateHandler(pTimerHandler);
System.out.println("pls work");
splashUnjum();
}
}));
splashSprite.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
splashSprite.setHeight(display.getHeight());
splashSprite.setWidth(display.getWidth());
sceneGameSplash.attachChild(splashSprite);
return sceneGameSplash;
}
private Scene splashUnjum(){
final Scene sceneUnjumSplash = new Scene();
this.mEngine.setScene(sceneUnjumSplash);
System.out.println("pls work 2");
final Sprite splashUnjumSprite = new Sprite(0,0,this.gamevedaSplashScreenRegion);
splashUnjumbleSprite.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
splashUnjumSprite.setHeight(display.getHeight());
splashUnjumSprite.setWidth(display.getWidth());
sceneUnjumSplash.attachChild(splashUnjumSprite);
sceneUnjumSplash.registerUpdateHandler(new TimerHandler(3f, true, new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {
sceneUnjumSplash.unregisterUpdateHandler(pTimerHandler);
System.out.println("pls work yo");
mainMenu();
}
}));
return sceneUnjumSplash;
}
答案 0 :(得分:1)
我不确定这是什么问题,但我认为你应该从splashUnjum()中删除这一行
this.mEngine.setScene(sceneUnjumSplash);
用
替换对splashUnjum()的调用this.mEngine.setScene(splashUnjum());
您应该做的另一件事是确保更新发生在updateThread
上