如何将模拟屏幕控制放到主场景?

时间:2012-11-18 07:59:53

标签: android andengine

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

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

1 个答案:

答案 0 :(得分: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方法。
  5. 现在,在您的问题中,当您将控件作为常规实体附加到场景时,它不会获得应该具有的优先级(控件 - HUD具有第一优先级)。所以事件可能在它甚至达到控制之前被消耗掉了。

相关问题