【问题标题】:Changing views from Libgdx in Android dynamically在 Android 中从 Libgdx 动态更改视图
【发布时间】:2014-06-17 20:12:37
【问题描述】:

我有两个独立的 3D Libgdx 项目,我们称它们为 SceneOneSceneTwo。 假设我在 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. 当我尝试切换相同的工件场景时,屏幕上会停留。

为什么会发生这种情况,我应该如何解决?谢谢!

【问题讨论】:

    标签: android opengl-es libgdx


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 2012-06-18
      • 1970-01-01
      相关资源
      最近更新 更多