surfaceview를 이용하여 게임 앱을 제작해보고 있습니다.
퍼즐류의 게임으로 한 스테이지를 플레이중에 막힘이 생기거나 잘못했을경우 리셋버튼을 눌러서 다시 시도하는 기능을 추가하려고 합니다.
플레이어가 리셋버튼을 누르는 순간 surfaceview의 그리기를 잠시 멈추고, 해당 스테이지의 정보(리셋되는 퍼즐의 위치등)의 값들을 다시 불러온 뒤에 surfaceview의 그리기를 시작해야 된다는 생각에
run 함수 안에 if문으로 boolean 변수하나를 줘서 잠시동안 그리기를 멈출려고 했으나, if문 안에 dodraw가 실행이 되고 다 돌아가기전에 reset이 되면 튕기는것 같습니다.
그렇다고해서 스레드 자체를 지웠다가 다시 만들면 화면이 깜박이기 때문에 이상해 보이는데 좋은 방법이 없을까요??
대략적인 코드는 아래와 같습니다.
class ImageThread extends Thread {
public static boolean isRun=true;
}
...
public void dodraw(){
...
}
public void run() {
while(Running) {
if(isRun) doDraw();
}
}
}
class GamePage extends AppCompatActivity{
...
private View.OnClickListener ResetListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
isRun= false;
....
isRun=true;
}
};
}