안드로이드 개발 질문/답변
(글 수 45,052)
제가 지금 게임만들고잇는데
케릭터 이미지가 잇고 케릭터가 피가 다달때 폭파돼는 이미지 5장이잇습니다.
public class GameView extends SurfaceView에
화면을 띠우는데요. 케릭터 이미지는 hero 이고 폭파이미지 herofire1~5까지 있습니다.
폭파된 이미지 5장을 배열로 잡고
for 문으로 (i=0;i<5;i++)을 이용해서
private void doDraw(){
canvas.drawBitmap(herobbung[i], hero.getX(),hero.getY(), null);
(소스는 그냥 주요 부위만)
이렇케 줫는데 실행해보면 폭파 되는 이미지가 연속으로 에니매이션처럼 나오도록 하고싶은데
이상하게 이미지 herobbung[0]이 뿌려지고 그위에 1번쩨거 그다음 2번쩨꺼 겹처서 뿌려져서 폭파돼는 애니 형테로 보여지지를 않는데요 이미지 하나 보여지고 보여진 이미지 삭제하고 그다음 이미지 보여지고 삭제하고 이러케 하면 됄꺼같은데 무슨 방법없을까요 .. ???
LoopHandler 사용해서 loop 안에 doDraw 를 계속 돌리고 있습니다... 방법좀 알려주세요 ㅜㅜㅜ




surfaceview에서 onDraw안에 for문을 돌려서 화면의 같은 좌표안에 여러번의 bitmap을 그리는것은 그리 추천하지 않습니다.
onDraw가 정확히 어떻게 구현되있는지 소스를 좀 봐야알겠지만..
가장 쉽게 해결할 수 있는법은 인스턴스 변수로 tag와 index(int형)를 하나 두시고 ..
5개의 이미지가 다 그려지면 tag = true, 아니면 false로 하셔서
if( tag == false ) {
canvas.drawBitmap(herobbung[i], hero.getX(), hero.getY(), null);
i++
if(i > 4) {
tag == true; // tag가 true이므로 이미지 5장을 그리는 5번의 draw호출이끝난후 상위 if문은 그냥 지나쳐버림..
i = 0; // 만약 케릭터의 생명이 여러개라면 다음번 폭파를 위해..초기화
}