1

私は小さなゲームに取り組んでいて、いくつかの問題を抱えています。

メニューがあります

public void onClick(View arg0) {
    // TODO Auto-generated method stub
    switch (arg0.getId()){
    case R.id.bStartGame:

        Intent a = new Intent(Menu.this, Action.class);
        startActivityForResult(a, 1);

        break; }

次に、サーフェスビューを開始するアクティビティ

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(new GameView(this));
}

次に、ゲームの仕組みを備えた surfaceView です。

私のコードのほとんどはこのビューにあります。

今、ゲームオーバースクリーンの良い解決策を見つけるのに問題があります。

surfaceview 内で新しいアクティビティを開始すると、動作しますが、セッション中に達成されたスコアである result() を取得できません。

そこで、この問題を解決する方法をお聞きしたいと思います。

方法を考えましたが、それを実装する方法がわかりません。surfaceview からアクティビティにハイスコアを渡し、(メニュー アクティビティが返す) 結果として設定することになります。そして、ゲームオーバースクリーンとなるダイアログを介してxmlファイルを開始し、プレーヤーが戻るボタンに触れるとすぐに、達成したスコアを確認できるメニューに戻ります。

このコードの書き方を教えてください。

よろしくデニス

4

1 に答える 1

0

これを解決するにはいくつかの方法があります。

-startActivityForResult を使用し、新しいアクティビティから送り返し、onActivityResult を使用して古いアクティビティでキャッチします ( https://developer.android.com/reference/android/app/Activity.htmlを確認してください) 。

-私がしたことを行います(怠惰でハックな方法:): startActivity() で新しいアクティビティを開始し、インテントに追加された追加データとしてハイスコアを追加します。新しいアクティビティで、getIntent().getInt (なんでも) を使用して、送信されたスコア データを取得し、それを使用して目的の操作を行います。次にそのアクティビティを閉じると、サーフェスビューを保持している前のアクティビティに戻ります。

今すぐトリック: インテントに追加されたスコアで新しいアクティビティを開始する前に、新しいアクティビティで行うのと同じスコア計算をサーフェスビューのアクティビティで実行するだけです! そうすれば、SurfaceView のアクティビティに戻ったときに、正しい新しいスコアが保持されます (保存/再開が正しく行われている場合は、それを保存/復元状態および/または SurfaceView のプライベート変数に追加することを忘れないでください)。 !

唯一の欠点は、スコア メカニズムを更新する必要がある場所が 2 つあることです。そして、それは良いプログラミングではありません。しかし、それは機能し、簡単です。

于 2012-04-25T23:08:28.323 に答える