users have to click certain points on a image
은 각각 putting invisible/transparent buttons over the image이 아니라 이벤트 처리가 포함 된 이미지를 클릭 한 곳에서 한 곳으로 보내고 어떤 클릭이 어떤 대상과 연결되는지를 결정한다고 말합니다.
(가) (b)에 (C)
이미지가 닮은 경우 의미
(가) 당신이 같이 당신의 점 (픽셀 위치) (B)를 설정 거라고 :
사람들이 그 작은 표적을 공격하기가 매우 어렵 기 때문에 이것은 당연히 문제를 일으키는 것입니다.
당신은 이것을 수정하는 방법을 결정했습니다. 인간의 뚱뚱한 손가락을주기위한 것이며, 지방을 만드는 방법을 조정하려고합니다. 사용자가 1238에 전화를 걸려고 시도하는 유스 케이스를 시도 할 수 있습니다. (c) 손가락의 크기를 늘립니다. 8에 대한 언론이 8 점과 0 점을 모두 다루었을 때부터 나는 그것이 너무 큽니다.
(d) (E) (F)
(d)는이 방식으로 보정하기위한 적당한 크기를 나타낸다. 1과 3은 여전히 그리워합니다. 1은 사각형이 아니기 때문에 단순히 놓칠 수 있습니다.그것은이 뚱뚱한 손가락 접근의 한계입니다. 인간은 실제로 단추 사이에 놓치기 때문에 놓친다. 당신이 3을 세어야한다고 주장한다면 나는 2, 5, & 6이 없으면 어떻게 할 것인지 모른다. 원하는 경우 직사각형 충돌 감지가 필요합니다. 나중에 그 이상.
3을 미스로 처리해야한다고 가정하면 (d)가 (e)와 수학적으로 동일하다는 점을 고려해주십시오. 목표 지점에 공차를 추가하는 것만으로 사용자 손가락이 아닌 목표를 달성 할 수 있습니다. 1과 3은 여전히 미스이지만 사용자 손가락의 비만을 보정하는 것과 관련이 없기 때문에 표적의 크기에 대해서만 우려하고 있습니다.
단순히 이런 식으로 생각하면 목표가 정사각형이 아니란 사실을 자유롭게 처리 할 수 있습니다. 그것들은 직사각형입니다. (f)에서 그렇게하는 것은 1을 놓친 것을 수정합니다. 목표물이 모두 동일한 크기와 비율이면 다른 x 및 y 공차를 사용하여 처리 할 필요가 없습니다. 녹색 버튼을 제대로 처리 할 수 있도록 크기를 변경할 수있는 유연성을 원한다면 모델링 대상을 단일 지점으로 중지하십시오. 모델 번호는 android.graphics.Rect
입니다. 실제로 나는 android.graphics.Rect
을 포함하는 자신의 클래스로 모델링하는 것을 선호하지만 그것은 다른 시간에 올라갈 OOP 비누 상자입니다.
우리가 이미 OOP 신에 우리의 코를 손때 내가했던 버튼의 생각을 거부 한 이후 지금 r.contains((int) event.getX(), (int) event.getY());
으로 히트를 감지 할 수 있습니다 당신이 어딘가에]는 new Rect(left, top, right, bottom)
와 대상을 정의하고 Rect r;
에 할당 한 가정 테스트를 포함하는 모든 타겟을 루프하는 각 클릭에 대해 말한다.
(g)
지금, 당신은 정말 2, 3, 5, 6은 모든 트리거 3 명중 사용자 미스가 다음 motionEvent.getSize()
조사시기를 주장합니다. 0에서 1까지 터치의 "fatness"을 측정 할 것입니다. getToolMajor()
또는 getTouchMajor()
을 사용할 수있는 경우 실제 터치 한 픽셀을 추정하는 데 도움이 될 수 있습니다. screen size을 알면 도움이 될 수 있지만 문서에서 알 수 있듯이이 중 하나를 사용하여 생성 된 픽셀 크기는 대략적인 값입니다. 일부 테스트는 이것이 작동하는지 또는 스케일링 상수가 필요한지 판단하는 데 도움이됩니다. 손가락이 부딪 치는 것을 보지 않고 압력을 더 가하는 대폭적인 획을주는 페인트 프로그램 용으로 설계 되었기 때문에 예상 한 것보다 작을 수 있습니다.
허용 오차를 사용하여 클릭 주위로 다른 Rect를 작성합니다 (fatFinger
). 이미지 위로 r
을 제공하는 루프에있는 r.intersects(fatFinger)
을 테스트하십시오. 사실이 될 때마다 다른 r
을 처리해야합니다.
그러면 (g)와 같은 결과를 얻을 수 있습니다. 이제 3 프레스는 2, 3, 5, & 6 프레스이고, 1 프레스는 이제 1 & 4 프레스이고 8 프레스는 8 & 프레스입니다.
2 기자는 기적적으로 단지 2 기자입니다. 터치 점으로 점을 치는 것만 큼 힘들지 않습니다. 이것은 게임에 좋을 수도 있지만 제 휴대 전화로하지 마십시오. :)
미쳐 가고 싶지 않다면, 약간의 OOP를하고 Rect가 포함 된 타겟을위한 클래스를 만들고 Rect가 지원하는 자신의 intersects 메소드를 제공하십시오. 당신이 루프를들을 수있는 방법은, 각 t
을 얻을 t.intersects(fatFinger)
에 해당하는 경우 당신은 당신이 모든 것을 만지고 싶어하지 않는 한 짧은에서 t.wasTouched();
자신,이 근처에 온다 대상이 아닌 손가락을 살찌 호출 할 수 있습니다. 그렇다면 둘 모두를 살찌십시오.
(f) 또는 (g)를 선택했는지에 관계없이이 방법을 사용하면 손가락 크기를 구성 할 필요가 훨씬 줄어 듭니다. 해피 코딩!
사용자 정의'onTouchEvent' 메소드가 작동하면 찾기 모음으로 설정 메뉴를 구현하고 [공유 환경 설정] [1]을 사용하여'tolerance '변수를 저장할 수 있습니다. [1] : http://developer.android.com/guide/topics/data/data-storage.html#pref – JohnDow
이 질문이 허용 오차 설정을 가져 오는 충돌 감지 문제인지 알 수 없습니다. 허용치를 백분율로 계산하는 방법에 대해 설명합니다. 너 정말이 세 가지에 붙어 있니? – CandiedOrange