2011-08-05 17 views
0

私はAndroidのゲームを開発しています。SurfaceViewを使ってゲームをレンダリングしています。プレーヤーが敗れたり勝ったりすると、AlertDialogがポップアップしてレベルを再起動します。私はSurfaceViewsでAlertDialogsを使用するにはどうすればよいAndroid Dev:AlertDialog with SurfaceView

  1. は基本的に私は2つの質問がありますか?それをlayout.xmlに入れなければならないのですか?それとも、UI部分またはゲームスレッド部分にコード化されていますか?

  2. アクティビティを「再起動」して、新しいアクティビティを開始しないようにする方法はありますか?元のものと同じ「インテント」で現在のアクティビティを開始するだけですか?

ありがとうございます!

+1

これについてはわかりませんが、http://www.andengine.org/を参照してください...ゲームを作成するのに便利です – Jack

+2

提案をいただきありがとうございますが、私は自分のゲームを基礎から構築しようとしています。 –

答えて

2

いずれのイベントでもthis.Start();を使用して、2番目の質問の回答であるアクティビティのスレッドを再開することができます。

それとも

if(maze.isGameComplete()) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setTitle(context.getText(R.string.finished_title)); 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View view = inflater.inflate(R.layout.finish, null); 
    builder.setView(view); 
    View closeButton =view.findViewById(R.id.closeGame); 

    closeButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View clicked) { 
     if(clicked.getId() == R.id.closeGame) { 
      context.finish(); 
     } 
     } 
    }); 

    AlertDialog finishDialog = builder.create(); 
    finishDialog.show(); 
} 
+0

これは私が気にしていたようですが、どこに行くのですか? –

+0

質問をよくお聞かせください。お手伝いできます。 – Nitin

+0

私のコードではどこに行くのですか? UIコード、スレッド、またはゲームビューでは? –

1

を使用することができますが、SurfaceViewクラスから活動を再開することができますが、それは「汚い」方法ですが、それはプロセスであまりにも多くのメモリを取ると、アプリケーションをクラッシュすることがあり、ちらつくことがあり

Intent intent = ((Activity) getContext()).getIntent(); 
getContext().startActivity(intent); //start the same activity again 
((Activity) getContext()).finish(); //finish the previous instance 

適切な方法は、必要なすべての変数をリセットするメソッドを書くことによって、ゲームを再初期化することで、明確な古いオブジェクトのArrayListからなど

それ警告ダイアログを使用することは可能ですが、標準的なアンドロイドダイアログは素晴らしいゲームのためには基本的すぎるように見えます。したがって、ダイアログの別のガープスオブジェクトを作成し、それを画面上に描画してアニメーションすることもできます透明な活動が、より多くの自由を与える別の可能性です。