Android 如何将模拟屏幕控制置于主场景?
我有一个HorizontalOnScreenControl类,它扩展了BaseOnScreenControl,它与DigitalOnScreenControl相同,但它只在水平方向工作。很好用。但其中一个是Scene,我想这就是为什么我们需要做Scene.setChildScene(mDigitalOnScreenControl)Android 如何将模拟屏幕控制置于主场景?,android,andengine,Android,Andengine,我有一个HorizontalOnScreenControl类,它扩展了BaseOnScreenControl,它与DigitalOnScreenControl相同,但它只在水平方向工作。很好用。但其中一个是Scene,我想这就是为什么我们需要做Scene.setChildScene(mDigitalOnScreenControl) 问题:例如,当我想显示弹出窗口时,当我再次使用.setChildScene()时,我的控件将消失。但如果我尝试直接添加到主场景:scene.AttachChild(m
问题:例如,当我想显示弹出窗口时,当我再次使用
.setChildScene()
时,我的控件将消失。但如果我尝试直接添加到主场景:scene.AttachChild(mDigitalOnScreenControl)
我无法触摸它,它不工作,但可见。你应该使用Camera.setHUD
而不是scene.setChildScene
从HUD.java
文件中引用:
虽然可以将HUD添加到场景中,但不应这样做。HUD将通过Camera.setHUD(HUD)添加到相机中
如果你需要添加2个或更多的HUD,你可以通过这种方式链接它们(我的一个游戏中有2个HUD,我就是这样做的。工作正常)
现在您可以调用Scene.setChildScene
,您的控件不会消失
一般知识:当安卓引擎从Android框架接收到触摸事件时,该事件将通过一个实体列表传递。如果它们中的任何一个使用了该事件,则该事件将停止。优先事项是:
onSceneTouchEvent
方法现在,在您的问题中,当您将控件作为常规实体附加到场景时,它不会收到应有的优先级(控件-HUD具有第一优先级)。因此,事件可能在到达控件之前就已被消耗。它正在工作,但现在我无法将其从相机中删除。GameController.camera.getHUD().detachSelf();它不起作用。我需要删除它,因为现在当level完成后,我回到levelselect(getEngine.setScene(getSomeScene())时,控件仍然在屏幕上。也许,我可以将可见性设置为false,但是……我认为您不能调用HUD的
detachSelf
方法,因为它没有父对象。如果将其与setChildScene
一起添加,则可以在HUD上使用detachSelf
,但我们知道这是错误的。使用GameController.camera.setHUD(空)代码>取而代之。
hud2.setChildScene(hud3);
hud1.setChildScene(hud2);
camera.setHUD(hud1);