2013-08-15 4 views
1

My full code here나는 안드로이드 개발을 배우고 내가 간단한 단어 검색 게임을 만들려고 해요

내 사용자 지정 구성 요소에 onTouchEvent를 설정하는 방법. 먼저 LetterTile 클래스를 만들었습니다.이 클래스는 화면에 문자 하나를 표시하며이 클래스는 자체적으로 그릴 메서드를 가지고 있습니다.

그런 다음 LetterTile의 행렬 인 LetterMap 클래스를 만들었습니다 (LetterMap (6, 6)을 사용하는 경우 LetterTile의 6x6 행렬을 화면에 그립니다).

이제 LetterTile 개체 중 하나를 만질 때 뭔가 할 수 있습니다. 이 순간, MainGamePanel에서 LetterTile 객체가 아닌 LetterMap 객체를 초기화하기 때문에 그렇게 할 수 없습니다.

당신은 내가 LetterTile 개체를 초기화하면, 난 그냥 문제를 처리하기 위해 onTouchEvent를 사용하는 것이 내 코드에서 볼 수 있지만, 지금은 내가 뭘 잘못 했 LetterMap

으로 수행하는 방법을 몰라? 또는이 게임에 대한 내 접근 방식이 올바르지 않습니까?

도움을 주시면 감사하겠습니다. 감사!

+0

귀하의 코드를 이해할 수 있는지 모르겠지만 귀하의 문제는 표면보기의 onTouchEvent()가 귀하의 LetterTile의 onTouchEvent를 재정의한다고 생각합니다. 이 경우 surfaceView의 onInterceptTouch() 메서드를 재정의합니다. 아래 링크를 참조하십시오. http://stackoverflow.com/questions/16191914/set-touchlistener-to-root-view-without-overriding-touchevents-of-child-view. 그렇지 않으면 LetterTile을 만질 때 일어나는 일에 대해 더 많은 정보를 제공하고 디버깅을 시도하고 점프하고 중단 할 브레이크 포인트를 찾으십시오. – owe

+0

내가 정의한 LetterTile 및 LetterMap은 아직보기가 아닙니다. LetterTile은 캔버스에 자신을 그리는 메소드가있는 클래스 (보기가 아님)이며, LetterMap은 LetterTile을 결합한 객체 (클래스)이며 LetterMap의 그리기 메소드는 각 LetterTile의 그리기 메소드를 간단하게 호출합니다. 그리고 SurfaceView의 onDraw 메소드에서, LetterMap은 스크린에 그려집니다 (따라서 LetterTile의 매트릭스를 그립니다). LetterTile을 만졌을 때, 나는 단지 빛나기를 원 했었습니다. (중요하지 않다고 생각합니다.) 중요하지만, LetterMap 전체가 아니라 각 LetterTile을 어떻게 만질 수 있습니까? –

+0

LetterMap을 만질 수 있습니까? 이게 옳은 거니? 귀하의 코드를 볼 때 귀하의 letterMap에 대한 TouchEvent를 볼 수 없습니다. 또 다른 질문 : 뷰를 사용하지 않는 이유는 무엇입니까? 이것이 이유가 있습니까? – owe

답변

1

죄송합니다. 이전에 코드를 컴파일하지 않았습니다. 이제 나는 이것을했고 조금 더 자세하게 보았습니다. 나는 당신의 MainPanel의 당신의 onTouchEvent 주석을 제거하고 LetterTile 당신이 그것을 설명으로 나는 touchEvent을 제어 할 수 없습니다를 추가 할 때

  1. 는 (나는 당신의 onTouchEvent LetterTile에 중단 점을 설정하지만, 디버거로 이동하지 않습니다 그것).

  2. 이 시나리오를 Views와 처리해야한다고 생각합니다. 왜냐하면 그들은 당신에게 필요한 모든 방법을 제공하기 때문에 스스로 구현할 필요가 없기 때문입니다. 미안하지만 당신 문제는 해결할 수 없어요.

좋은 시작은 custom views에 대한 android 자습서입니다.

+0

감사합니다! 그러나 내 LetterTile이 View 객체 인 경우 LetterMap을 ViewGroup 객체로 만들어야합니까? 또는 LetterMap은 뷰일뿐입니다. 또한, 어떻게 생성자가 LetterTile (Context context, AttributeSets attrs)이기 때문에 LetterMap 클래스에서 LetterTile 객체를 초기화 할 수 있습니까? 이것은 매우 혼란 스럽습니다 –

+0

LetterMap은 LetterTile의 배열이므로 LetterMap 클래스의 LetterTile 객체를 생성해야합니다. –

+0

즉, 사용자 정의보기를 동적으로 (프로그래밍 방식으로) 만들 수 있습니다. –