Пропуски кадров с Cocos2d-android при возобновлении игровой активности

Я пробовал некоторые игровые движки для Android и наткнулся на cocos2d-android-1. Я создал небольшой пример, который почти ничего не делает, кроме как для начала показывает счетчик FPS.

Проблема в том, что каждый раз, когда активность переходит в фоновый режим (через клавишу домой или назад) и возвращается обратно, FPS сильно падает. При первом запуске они у меня около 60 (HTC Desire), после возобновления активности остаются ниже 10.

В манифесте для активности фиксируется альбомная ориентация и используется @android:style/Theme.Black.NoTitleBar.Fullscreen для включения полноэкранного режима.

Когда я останавливаю приложение из меню приложений в настройках устройства, все сбрасывается. При первом запуске снова 60 фпс, при следующем запуске тоже падает.

Как я могу это исправить?

Вот небольшой рабочий пример:

public class MainActivity extends Activity {

    private CCGLSurfaceView glSurfaceView;

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

        glSurfaceView = new CCGLSurfaceView(this);
        setContentView(glSurfaceView);
    }

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

        CCDirector.sharedDirector().attachInView(glSurfaceView);
        CCDirector.sharedDirector().setDisplayFPS(true);
    }

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

        CCDirector.sharedDirector().pause();
    }
}

person user287351    schedule 13.01.2012    source источник


Ответы (1)


Ок, исправил. По-видимому, я забыл вызвать возобновление() для директора. Добавил это к приведенному выше коду, и он отлично работает:

@Override
public void onResume() {
    super.onResume();
    CCDirector.sharedDirector().resume();
}
person user287351    schedule 13.01.2012