2

私が開発しているゲームでは、この機能が必要です。画面上に描画し、描画が決定された形状 (長方形、三角形など) であるかどうかを確認できるようにする必要があります。

そこで、より簡単な方法であるジェスチャを使用したいと思いました。ジェスチャ ビルダーでいくつかのシェイプを作成し、それらをモデルとして使用します。問題は、AndEngine で動作させることができないということです。

基本的に描画ボードである GestureOverlayView をゲームのシーンの上に配置する必要があります。これにより、すべてのエンティティがアタッチされたシーン自体が表示され、ジェスチャも描画できるようになります。

AndEngine が画面に表示されるか、GestureOverlayView が表示されます。両方ではありません。

私は Android 開発と AndEngine の両方に慣れていないので、ここで立ち往生しています...どうすれば機能させることができるかについてのアイデアはありますか? 私はいたるところを見ましたが、有用なものは何も見つかりません...

例として、ジェスチャ部分のコードを以下に残しておきます。プロジェクトのパス res/raw に事前に作成されたジェスチャがない場合、明らかに機能しません。

public class ProvaGesture extends Activity implements GestureOverlayView.OnGesturePerformedListener        
{

     private GestureLibrary gestureLib;

     public  GestureOverlayView gestureOverlayView;


     @Override
     public void onCreate(Bundle savedInstanceState) 
     {
          super.onCreate(savedInstanceState);

          gestureOverlayView = new GestureOverlayView(this);

          gestureOverlayView.addOnGesturePerformedListener(this);

          gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures);

          if (!gestureLib.load())
          {
                finish();
          }

           setContentView(gestureOverlayView);
      }


     public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture)
     {
           ArrayList<Prediction> predictions = gestureLib.recognize(gesture);

           for (Prediction prediction : predictions) 
           {
                 if (prediction.score > 1.0) 
                 {
                        Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
                 }
           }
     }


}
4

1 に答える 1

4

デモ コードに AndEngine の部分がありませんでした。ProvaGestureアクティビティは、AndEgine のまたはその後の implements から拡張する必要がSimpleBaseGameActivityありBaseGameActivityますIOnSceneTouchListener

あなたのアイデアに基づいて、ジェスチャのみを処理する別のオーバーレイ ビューを作成しようとしていると推測したので、次のことを考慮する必要があります。

  • Androidで一度に実行できるアクティビティは 1 つだけです。

  • AndEgine のサーフェス ビューに重なるユーザー定義のビューを作成する場合は、Andengine の例を参照してくださいXMLLayoutExample

解決策は[提案]:

public class OverlapLayoutExample extends SimpleLayoutGameActivity {
@Override
protected int getLayoutID() {
    //your layout id (xml file in layout folder)
    return R.layout.overlaplayout;
}

@Override
protected int getRenderSurfaceViewID() 
{
    //overlaplayout will contain a SurfaceView with following ID
    //this surface is where you render Andgine
    return R.id.overlaplayout_rendersurfaceview;
}
}

overlaplayout独自のレイアウトを作成することを忘れないでくださいsurfaceView:OverlayView

于 2012-08-29T03:17:03.187 に答える