Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将模拟屏幕控制置于主场景?_Android_Andengine - Fatal编程技术网

Android 如何将模拟屏幕控制置于主场景?

Android 如何将模拟屏幕控制置于主场景?,android,andengine,Android,Andengine,我有一个HorizontalOnScreenControl类,它扩展了BaseOnScreenControl,它与DigitalOnScreenControl相同,但它只在水平方向工作。很好用。但其中一个是Scene,我想这就是为什么我们需要做Scene.setChildScene(mDigitalOnScreenControl) 问题:例如,当我想显示弹出窗口时,当我再次使用.setChildScene()时,我的控件将消失。但如果我尝试直接添加到主场景:scene.AttachChild(m

我有一个HorizontalOnScreenControl类,它扩展了BaseOnScreenControl,它与DigitalOnScreenControl相同,但它只在水平方向工作。很好用。但其中一个是Scene,我想这就是为什么我们需要做Scene.setChildScene(mDigitalOnScreenControl)


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

你应该使用
Camera.setHUD
而不是
scene.setChildScene

HUD.java
文件中引用:

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

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

现在您可以调用
Scene.setChildScene
,您的控件不会消失

一般知识:当安卓引擎从Android框架接收到触摸事件时,该事件将通过一个实体列表传递。如果它们中的任何一个使用了该事件,则该事件将停止。优先事项是:

  • 摄像头的HUD(如果存在)
  • 子场景(如果存在)
  • 触摸场景中的区域(如果有)
  • 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);