2013-11-27 1 views
1

В настоящее время я создаю игру с MainActivity и SurfaceView. SurfaceView не является его собственной деятельностью, но просто вызывается в MainActivity.Как приостановить/возобновить SurfaceView из MainActivity?

То, что я пытаюсь сделать, это нажать кнопку на MainActivity (Пауза/Резюме), которая приостанавливает рендеринг на SurfaceView и возобновляет его при нажатии.

Я не совсем уверен, как бы это сделать, внутри моего SurfaceView (GameView). Я могу остановить свой GameLoopThread, но если я попытаюсь просто перезапустить его (пауза, а затем возобновить игру), он ничего не сделает.

Я попытался с приостановкой/возобновлением самой деятельности, а также попыткой запустить мой SurfaceView в булевском режиме, но ни один из них не работал.

Любые идеи были бы оценены!

ответ

2

Вы можете создать флаг типа boolean в вашем классе SurfaceView, например isRunning = false; затем проверьте его в своем представлении перед началом своей темы. также создайте два метода onPause() и onResume() в виде поверхности.

onPause(){ 
    isRunning=false; 
    // make thread null; 
} 
And 
onResume(){ 
isRunning=true; 
} 

Вызовите оба эти метода в своих действиях onPause() и onResume() методом восприимчиво.

+0

У меня теперь есть мой SurfaceView, в котором используется мой GameLoopThread. Я пытаюсь установить для моего GameLoopThread значение boolean false (не работает), когда я вхожу в кнопку паузы, но когда я нажимаю на кнопку возобновления (установите для параметра GameLoopThread значение boolean значение true) для повторного запуска моего потока, он ничего не делает. – Bedimindtricks

+1

У вас реализованы методы onPause() и onResume() класса Activity и называются onPause() и onResume() SurfaceView там? –

+0

О, я не знал, что мне нужны методы onPause() и onResume() в моем SurfaceView. Будут ли они включать super.onPause() и super.onResume()? – Bedimindtricks