0

我有扩展 BaseOnScreenControl 的 Horizo​​ntalOnScreenControl 类,它与 DigitalOnScreenControl 相同,但它只能水平工作。它工作正常。但是其中一个父母是 Scene,我认为这就是我们需要这样做的原因scene.setChildScene(mDigitalOnScreenControl)

问题:例如,当我想要显示弹出窗口时,当我再使用.setChildScene()一次时,我的控件消失了。但是如果我尝试直接添加到主场景:scene.AttachChild(mDigitalOnScreenControl)比我无法触摸它,它不工作,但可见。

4

1 回答 1

2

您应该使用Camera.setHUD而不是Scene.setChildScene.

HUD.java文件中引用:

虽然您可以将 HUD 添加到场景,但您不应该这样做。HUD 旨在通过 Camera.setHUD(HUD) 添加到相机。

如果您需要添加 2 个或更多 HUD,您可以这样链接它们(我的一个游戏中有 2 个 HUD,我就是这样做的。工作正常)

hud2.setChildScene(hud3);
hud1.setChildScene(hud2);
camera.setHUD(hud1);

现在你可以打电话Scene.setChildScene了,你的控制不会消失。

常识:当AndEngine从Android框架接收到一个触摸事件时,该事件会通过一个实体列表。如果其中任何一个消耗了该事件,它就会停止。优先事项是:

  1. 相机的 HUD(如果存在)
  2. 子场景(如果存在)
  3. 场景中的触摸区域(如果有)
  4. onSceneTouchEvent方法。

现在,在您的问题中,当您将控件作为常规实体附加到场景时,它不会获得应有的优先级(控件 - HUD 具有第一优先级)。因此,该事件可能在到达控件之前就被消耗掉了。

于 2012-11-18T20:06:13.843 回答