0

BaseOnScreenControlを拡張するHorizo​​ntalOnScreenControlクラスがあります。これは、DigitalOnScreenControlと同じですが、水平方向でのみ機能します。正常に動作しています。しかし、この親の1つは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 を追加する必要がある場合は、この方法で連鎖させることができます (私のゲームの 1 つに 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 に答える