我有一个扩展BaseOnScreenControl的HorizontalOnScreenControl类,它与DigitalOnScreenControl相同,但它只能水平工作。它工作正常。但是这个父母中有一个是Scene,我认为我们需要做scene.setChildScene(mDigitalOnScreenControl)
。
问题:当我需要时,例如,显示弹出窗口,当我再次使用.setChildScene()
时,我的控件就会消失。但是如果我尝试直接添加到主场景:scene.AttachChild(mDigitalOnScreenControl)
而不是我无法触摸它,它就不起作用,但是可见。
答案 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框架收到触摸事件时,事件会通过列表实体传递。如果其中任何一个消耗该事件,它将停止。优先事项是:
onSceneTouchEvent
方法。现在,在您的问题中,当您将控件作为常规实体附加到场景时,它不会获得应该具有的优先级(控件 - HUD具有第一优先级)。所以事件可能在它甚至达到控制之前被消耗掉了。