안드로이드 개발 질문/답변
(글 수 45,052)
import android.graphics.Point; import android.graphics.Rect; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class Joy implements OnTouchListener{ public float initx = 715; public float inity = 395; public Point _touchingPoint = new Point(715,395); public Point _pointerPosition ; public Boolean _dragging = false; public Boolean test = true; public int xplus,yplus; public int x1,y1,xp,yp; @Override public boolean onTouch(View v, MotionEvent event) { if (event.getPointerCount() > 1) { x1 = (int)event.getX(1); y1 = (int)event.getY(1); _touchingPoint.x = (int)event.getX(0); _touchingPoint.y = (int)event.getY(0); update(event);} else { _touchingPoint.x = (int)event.getX(0); _touchingPoint.y = (int)event.getY(0); //터치영역제한 Rect asd=new Rect(); asd.set(650,350,770,470); if(asd.contains(_touchingPoint.x, _touchingPoint.y) == true){ update(event); } } return true; } public void update(MotionEvent event ){ if ( event.getAction() == MotionEvent.ACTION_DOWN ){ _dragging = true; test = true; }else if ( event.getAction() == MotionEvent.ACTION_MOVE){ test =false; }else if ( event.getAction() == MotionEvent.ACTION_UP){ _dragging = false; test =false; } if ( _dragging ){ if( _touchingPoint.x < 690){ _touchingPoint.x = 690; }if ( _touchingPoint.x > 740){ _touchingPoint.x = 740; }if (_touchingPoint.y < 370){ _touchingPoint.y = 370; }if ( _touchingPoint.y > 420){ _touchingPoint.y = 420; } double angle = Math.atan2(_touchingPoint.y - inity,_touchingPoint.x - initx)/(Math.PI/180); _pointerPosition = new Point(xplus,yplus); _pointerPosition.y += Math.sin(angle*(Math.PI/180))*(_touchingPoint.x/70); _pointerPosition.x += Math.cos(angle*(Math.PI/180))*(_touchingPoint.x/70); xplus = _pointerPosition.x; yplus = _pointerPosition.y; xp = (int) (Math.sin(angle*(Math.PI/180))*(_touchingPoint.x/70)); yp = (int) (Math.cos(angle*(Math.PI/180))*(_touchingPoint.x/70)); }else if (!_dragging) { _touchingPoint.x = (int) initx; _touchingPoint.y = (int) inity; } } }
조이패드소스인데 터치순서에따라터치id가 0,1
로부여되는데 지금소스에는 처음터치한것만 인식이되는데(터치id0)
어떤방법을쓰는게가장좋을까요??