안드로이드 개발 질문/답변
(글 수 45,052)
책의 중간과정인 외벽띄우기에서 답보상태입니다.
소스상에서의 에러는 없구요; 첫 화면인 글자까지는 뜨는데 키를 누르고 외벽이 뜨는 화면으로 넘어갈때 예기치 못한 에러라고 뜨네요.
뭐가 문제일까요... 계속 답보상태라 소스까지 올려봅니다,
도와주세요 ㅡㅜ
소스상에서의 에러는 없구요; 첫 화면인 글자까지는 뜨는데 키를 누르고 외벽이 뜨는 화면으로 넘어갈때 예기치 못한 에러라고 뜨네요.
뭐가 문제일까요... 계속 답보상태라 소스까지 올려봅니다,
도와주세요 ㅡㅜ
2010.05.18 12:39:43
디버깅한번 해보면 좋을텐데, 이클립스로 불러들이는 방법을 몰라, 소스코드에서 보고 글써봅니다.
1. 제가 자바 문법쪽은 잘모르겠지만, &과 |부분은 &&과 ||으로 바꿔줘야 하는것 같습니다.
2. mYTileCount과 mXTileCount가 올바른 값이 들어가는 건가요?
(SizeChange 상황에서 값이 바뀌게 되어있는데, View생성시 이벤트가 발생 되는지 모르겠네요.)
그리고
canvas.drawBitmap(mTileArray[mTileGrid[x][y]],
mXOffset + x * mTileSize,
mYOffset + y * mTileSize,
mPaint);
탈공님도 이 부분 의심하는것 같은데, 한번 주석처리해보고, 실행해시던지요.
그런데, mXOffset가 onSizeChanged 에서 중간값으로 설정되던데, 그러면, 중간부터 외벽이 출력되려나요. -_-a
한번 돌려봤으면, 명확할텐데.. 자바도 할줄 모르는 녀석이 소스보려니, 깝깝하군요 -_-;;;
2010.05.18 15:13:37
안녕하세요?
제가 도움이 될까해서 답변을 하도록 하겠습니다.
그럼 제 답변을 참고하시고 잘 되는지 봐주시기 바랍니다.
일단 올려주신 코드에는 약간의 문제가 있었습니다.
여기서 말하는 문제는 코드 상에 있는 에러를 말하는 것이 아닙니다.
따라서 코드 자체에는 문제가 없어 보입니다.
이런 오류를 찾는게 가장 어렵지요.
자, 그럼 보겠습니다.
먼저 main.xml 파일을 보도록 하겠습니다.
이 파일에서 이 부분,
<com.android.gosnake.SnakeView
android:id = "@+id/snake"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
titleSize = "12">
</com.android.gosnake.SnakeView>
여기를 보시면 com.android.gosnake 패키지에 있는 SnakeView를 뷰로 설정한다고 해 놓았네요??
그럼 이 main.xml을 사용하는 GoSnake.java 파일을 보겠습니다.
이 파일을 보니 단지 다음과 같이 구현되어 있었습니다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
이렇게만 구현되어 있으면...어떻게 될까요?
main.xml 파일에 있는 SnakeView를 설정해주어야 하는데 SnakeView를 설정하지 않았지요?
따라서 문제가 되는 겁니다.
그렇다면, 해결책은? 설정해주면 됩니다.
그럼 간단하게 GoSnake.java 코드를 다음과 같이 수정합니다.
public class Gosnake extends Activity {
private SnakeView mSnakeView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSnakeView = (SnakeView) findViewById(R.id.snake);
mSnakeView.setTextView((TextView) findViewById(R.id.text));
mSnakeView.setMode(SnakeView.READY);
}
}
위와 같이 수정하시고 실행해 보세요.
또한 화면이 잘 그려지는지 확인하시기 바랍니다^^
아 그리고 지금 작성된 코드는 full 코드가 아니라는 것을 참고하시기 바랍니다.
그럼 이상입니다~
제가 도움이 될까해서 답변을 하도록 하겠습니다.
그럼 제 답변을 참고하시고 잘 되는지 봐주시기 바랍니다.
일단 올려주신 코드에는 약간의 문제가 있었습니다.
여기서 말하는 문제는 코드 상에 있는 에러를 말하는 것이 아닙니다.
따라서 코드 자체에는 문제가 없어 보입니다.
이런 오류를 찾는게 가장 어렵지요.
자, 그럼 보겠습니다.
먼저 main.xml 파일을 보도록 하겠습니다.
이 파일에서 이 부분,
<com.android.gosnake.SnakeView
android:id = "@+id/snake"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
titleSize = "12">
</com.android.gosnake.SnakeView>
여기를 보시면 com.android.gosnake 패키지에 있는 SnakeView를 뷰로 설정한다고 해 놓았네요??
그럼 이 main.xml을 사용하는 GoSnake.java 파일을 보겠습니다.
이 파일을 보니 단지 다음과 같이 구현되어 있었습니다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
이렇게만 구현되어 있으면...어떻게 될까요?
main.xml 파일에 있는 SnakeView를 설정해주어야 하는데 SnakeView를 설정하지 않았지요?
따라서 문제가 되는 겁니다.
그렇다면, 해결책은? 설정해주면 됩니다.
그럼 간단하게 GoSnake.java 코드를 다음과 같이 수정합니다.
public class Gosnake extends Activity {
private SnakeView mSnakeView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSnakeView = (SnakeView) findViewById(R.id.snake);
mSnakeView.setTextView((TextView) findViewById(R.id.text));
mSnakeView.setMode(SnakeView.READY);
}
}
위와 같이 수정하시고 실행해 보세요.
또한 화면이 잘 그려지는지 확인하시기 바랍니다^^
아 그리고 지금 작성된 코드는 full 코드가 아니라는 것을 참고하시기 바랍니다.
그럼 이상입니다~