안드로이드 개발 질문/답변
(글 수 45,052)
대략 소스가 이런 구조인데
public SpriteAnimation(Bitmap bitmap, int Frame, int Type) { // 그려질 스프라이트 이미지, 프레임수[동작 갯수], 이미지 타입
super(bitmap);
m_type = Type;
m_rectangle = new Rect(0,0,0,0);
m_FrameTimer =0;
m_CurrentFrame =0;
//m_FrameTimer1 = 0;
//m_CurrentFrame1 = 0;
m_SpriteWidth = bitmap.getWidth()/Frame;
m_SpriteHeight = bitmap.getHeight();
}
public void InitSpriteData(int _fps, int iFrame){ // 프레임 도는 속도, 최대 프레임
//기본 정보 설정
//m_SpriteWidth = _width;
//m_SpriteHeight = _height;
m_rectangle.top = 0;
m_rectangle.bottom = m_SpriteHeight;
m_rectangle.left = 0;
m_rectangle.right = m_SpriteWidth;
m_fps = 800 / _fps;
m_NoOfFrames = iFrame;
}
public void ChangeSprite(Bitmap bitmap, int iFrame, int Type){
// 바뀔 스프라이트 이미지, 바뀌는 이미지의 프레임 수, 바뀌는 이미지의 타입
m_bitmap = bitmap;
m_CurrentFrame = 0;
m_SpriteWidth = bitmap.getWidth()/iFrame;
m_SpriteHeight = bitmap.getHeight();
m_rectangle.bottom = m_SpriteHeight;
m_rectangle.right = m_SpriteWidth;
m_NoOfFrames = iFrame;
}
대략 이런 식인데, 이미지가 교체 될때마다 깜빡 거리는 현상이 일어납니다. 어떻게 하면 좋을까요?
2011.07.18 17:07:18
while(m_run){
_canvas = null;
try{
m_gameview.Update();
//SurfaceHolder를 통해 Surface 접근햇 가져옴
_canvas = m_surfaceHolder.lockCanvas(null);
synchronized(m_surfaceHolder){
m_gameview.onDraw(_canvas); //그림을 그림
sleep(10);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(_canvas != null)
//Surface 화면에 표시함
m_surfaceHolder.unlockCanvasAndPost(_canvas);
}
이렇게 해서 더블버퍼링 처리는 했는데요ㅠ...




안드로이드에 대한 지식이 깊지 않아서 정확한 답변일지는 모르나 아무도 댓글을 안들어셔서 제가 한번달아봅니다.
이미지 교체될때의 깜박임을 해결하기위해서 자바 ui 측면에서는 자주 사용하는 방법으로 '더블버퍼링' 이있습니다.
안드로이드에서 적용가능한지는 한번 찾아봐야 할 듯합니다. 혹시 찾아보지 않으셨다면 더블버퍼링에 대한 설명등이
많이 있으시 참고하시면 될 듯합니다. 미천한 지식이나마 도움이 되었으면 합니다. 즐거운 하루 보내세요