0

我正在使用AndEngine在android中开发游戏,当前最大的问题是当手机再次锁定和解锁时(大约一分钟或更长时间)游戏场景会重置。

我做了很多搜索,大多数人建议使用关闭应用程序时调用的函数进行保存。我可以这样做,但这样可以节省很多。但是,我确实知道这是可能的,因为它是在 AndEngine 示例中完成的。AndEngine 示例中的一个特别值得注意的事情是,当程序在前台时手机被锁定时,屏幕会再次打开。再次按下电源会保持屏幕关闭,直到再次解锁,在女巫游戏完美恢复之后。

我浏览了清单文件和启动器源代码,复制并粘贴了一些东西,但仍然没有成功。似乎解决方案在 Manifest 文件中,所以这是我的程序之一,包括到目前为止的所有修改:

<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 回答