动态更改Android中的Libgdx视图

时间:2014-06-13 12:57:30

标签: android opengl-es libgdx

我有两个独立的3D Libgdx项目,我们称之为 SceneOne SceneTwo 。 让我们说我在Android中有一个布局,其中有两个按钮:ButtonA和ButtonB。 当我点击 ButtonA SceneOne 在布局中可见时,当我点击 ButtonB SceneTwo 显示并替换 SceneOne 即可。他们互相切换。

这里的伪代码有效,但每次都会初始化视图,导致性能不佳:

View SceneOne;
View SceneTwo;

void onButtonAClick()
{
this.removeView(SceneTwo);
RendererA renderer = new Renderer(); // my Libgdx class implementing ApplicationListener
SceneOne = ((AndroidApplication)context).initializeForView(renderer, cfg);
addView(SceneOne);
}


void onButtonBClick()
{
this.removeView(SceneOne);
RendererB renderer = new Renderer(); 
SceneTwo = ((AndroidApplication)context).initializeForView(renderer, cfg);
addView(SceneTwo);
}

它很慢但是有效。但是当我将初始化更改为懒惰时,它会停止工作

View SceneOne;
View SceneTwo;

void onButtonAClick()
{
this.removeView(SceneTwo);
if ( SceneOne == null)
{
RendererA renderer = new Renderer(); // my Libgdx class implementing ApplicationListener
SceneOne = ((AndroidApplication)context).initializeForView(renderer, cfg);
}
addView(SceneOne);
}


void onButtonBClick()
{
this.removeView(SceneOne);
if ( SceneTwo == null)
{
RendererB renderer = new Renderer(); 
SceneTwo = ((AndroidApplication)context).initializeForView(renderer, cfg);
}
addView(SceneTwo);
}

会发生什么:

  1. SceneOne 显示。
  2. 点击 ButtonB
  3. SceneTwo 显示
  4. 点击 ButtonA
  5. 屏幕上出现奇怪的东西,它看起来像 SceneTwo 但有一些文物。
  6. 当我尝试切换相同的工件场景时,屏幕上会停留。
  7. 为什么会发生这种情况,我应该如何解决?谢谢!

1 个答案:

答案 0 :(得分:0)

我使用了一个名为AndroidFragmentApplication的新类,只是在保留对它们的引用时切换了片段,因此每次切换时都不需要重新初始化它。