2012-04-11 2 views
0

Ive пытался заставить мое приложение перейти от одной сцены к другой. то, что я делаю, это onLoadScene(), я направляю его методу, который имеет сцену, и то, что я пытаюсь сделать, это установить другую сцену, которая находится в другом методе ... но я получаю спрайт из первой сцены, застрявшей на экран !в функции AndEngine mEngine.setScene() не работает

Может кто-нибудь помочь мне в обучении меня, как перейти от одной сцены к другой в том же классе.

вот мои коды:

@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; 

} 

ответ

1

Я не уверен, что это проблема, но я думаю, вы должны удалить эту строку из splashUnjum()

this.mEngine.setScene(sceneUnjumSplash); 

заменить вызов splashUnjum() с

this.mEngine.setScene(splashUnjum()); 

одна вещь, которую вы должны сделать, это убедиться, что изменение происходит на updateThread

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