안드로이드로 게임을 개발중인 뉴비입니다. 
전 프로젝트까지는 유니티를 사용해서 그나마 겨우 개발할 수 있었는데 이번에는 이클립스로 네이티브 개발을 해야 하는 상황이네요..


현재 MDlet으로 완성이 되어 있는 게임 소스를 분석하여 안드로이드에 맞춰 옮기는 작업을 하고 있습니다.

문제는 게임을 시작하고 나서 로고 화면 -> 타이틀화면으로 이동을 해야 합니다.
하지만 이 코드가 액티비티나 뷰를 따로 사용하지 않고 그냥 1만 6천라인의 코드 하나로 몽땅 구현되어 있어서요..
(여기서 문제가 터졌죠.. 이걸 최대한 살려서 만들어야 하는데 코드가 너무 많아서 분석조차 시간이 너무 걸리더군요..)


우선 대략적으로 상황을 적어보면..

public void paint()
{
switch(m_byState)
{
case _LOGO_INFO:
LogoInfo();
break;
case _LOGO_ANI:
LogoAni();
break;
.
.
.
.
}
}

public void LogoInfo()
{
canvas.drawBitmap(bitmapArray[logo], new Rect(0, 0, bitmapwidth, bitmapheight), new Rect(위치 x, 위치 y, bitmapwidth + 위치 x, bitmapheight + y);
.
.
.
}

먼저 게임을 시작하면 onDraw 함수에서 paint()함수를 실행시킨 뒤 현재 상태(m_byState)를 체크하여 각각의 해당하는 함수를 호출합니다.

피쳐폰용으로 제작된 게임이라 그런지 변수 하나도 함부로 사용하는게 없나봐요.
그래서 LogoInfo()함수에서 사용된 bitmapArray[logo]를 계속해서 재사용합니다.

우선 LogoInfo()함수에서 터치 이벤트를 받으면 m_byState의 값을 변하게 해서  loadResource 함수를 불러옵니다.
loadResource함수는 paint()함수처럼 상태를 체크해서 정해진 bitmap 변수내에 들어갈 리소스들을 상태에 따라 계속 바꾸는 역할을 합니다.

loadResource함수를 불러온 뒤 LogoAni()함수를 불러오는데요

계속 LogoInfo()에서 그린 것들이 남아있습니다.

그래서 초기화 문제인거 같아 초기화 함수를 따로 만들어서 사용된 bitmap 변수들을 전부 recycle도 해보고, 아예 destroy했다가 다시 만들기도 해보고 했는데 계속 남아있네요...


canvas를 초기화 하거나 하는 함수는 없나요..