본문

[2017.10.06] 40. Android 테트리스 프로젝트 [블록 삭제와 Thread]

도입
이전 포스팅(http://heepie.tistory.com/129)에 이어 이번 포스팅에서는 추가로 테트리스 라인 삭제와 Thread를 통한 자동 블록 하강 기능을 추가할 예정이다.

(Thread 안드로이드 실습 - http://heepie.tistory.com/112)



Android 테트리스 프로젝트 [블록 삭제와 Thread]의 흐름

아래 버튼으로 충돌이 있다면 MainStage를 갱신한 후 

각각의 라인을 확인하며 라인이 채워져있다면 해당 라인을 삭제한다.

1
2
3
4
5
6
public void lineCheckAndRemove() {
    for(// MainStage의 각각의 라인을 확인하며) {
        if(isFillLine(y))
            removeLine(y);
    }
}
cs



문제점 및 해결

Thread로 자동하강 기능을 넣으며 Sub Thread를 통해  MainActivity의 View에 접근했고 다음과 같은 오류가 발생했다.

오직 MainThread로만 View에 접근이 가능하다고 한다. 

원인Sub Thread 안에서 Board 클래스의 invalidate 메소드를 호출하는 부분이었다.


그래서 찾아보니,

non-UI Thread에서는 postInvalidate를 통해 Main View를 갱신할 수 있다.



스크린 샷



#안드로이드 프로젝트 #안드로이드 테트리스 #tetris #테트리스 프로젝트

공유

댓글