0

AndEngine を使用して Android でゲームを開発していますが、現在の最大の問題は、電話がロックされてから再びロック解除されたとき (その間に約 1 分以上)、ゲーム シーンがリセットされることです。

私は多くの検索を行いましたが、アプリを閉じたときに呼び出される関数で保存することをお勧めします。私はこれを行うことができましたが、それは多くの節約です。ただし、AndEngine の例で行われているため、これが可能であることはわかっています。AndEngine の例で特に注目すべきことの 1 つは、プログラムがフォアグラウンドにあるときに電話がロックされると、画面が再びオンになることです。電源をもう一度押すと、ゲームが完全に復元された後、再びロックが解除されるまで画面がオフのままになります。

マニフェスト ファイルとランチャーのソース コードをスクロールし、いくつかのものをコピーして貼り付けましたが、まだ成功していません。解決策はマニフェストファイルにあるようですので、これまでのすべての変更を含む私のプログラムの1つを次に示します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.andenginetest"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:configChanges="orientation|keyboard|keyboardHidden"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

多くの人が示唆しているにもかかわらず、どれも問題に影響を与えていません。誰かが私が間違っているかもしれないことを教えてもらえますか? 前もって感謝します!

4

2 に答える 2

0

私はまったく同じ問題を抱えていました。これをゲームアクティビティのマニフェストに追加しました。

         android:screenOrientation="landscape"
         android:configChanges="keyboard|keyboardHidden|orientation">            
    </activity>

ご覧のとおり、マニフェストにscreenOrientationがありません。おそらく、エンジンを作成するときに方向を設定しているだけです。これによって何かが変わるかどうかはわかりませんが、私はそのように機能しました。

ああ、onResumeGameとonPauseGameも設定することを忘れないでください:

@Override
public void onResumeGame() {
    super.onResumeGame();

    this.enableAccelerometerSensor(this);
}

@Override
public void onPauseGame() {
    super.onPauseGame();

    this.disableAccelerometerSensor();
}
于 2012-07-19T22:10:02.007 に答える
0

アクティビティのライフサイクルに関連していると思います。ここの図でわかるように http://developer.android.com/reference/android/app/Activity.html

アクティビティの一時停止、停止、開始に関連するメソッドがいくつかあります。onPause()onResume()メソッドを上書きし、そこに保存する必要があります。onPause()が呼び出されると、オペレーティング システムには、ユーザーが何もするオプションがなくても、アクティビティを強制終了するオプションがあります。

それが起こっている可能性があるため、これらのメソッドを上書きすると、一時停止したときに何をすべきかをアプリケーションに伝えることができます (つまり、画面全体が別のビューで覆われています - ロック、電話、別のアプリケーションなど)。再開したとき。

それがあなたの意図したことであることを願っています。幸運を!

于 2012-07-15T12:01:36.623 に答える