안드로이드 개발 질문/답변
(글 수 45,052)
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
public class Joy implements OnTouchListener{
private Map map = new Map();
public float initx = 715;
public float inity = 395;
public Point _touchingPoint = new Point(715,395);
public Point _pointerPosition = new Point(220,150);
private Boolean _dragging = false;
public int xplus,yplus;
@Override
public boolean onTouch(View v, MotionEvent event)
{
_touchingPoint.x = (int)event.getX();
_touchingPoint.y = (int)event.getY();
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;
}else if ( event.getAction() == MotionEvent.ACTION_UP){
_dragging = 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.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;
}else if (!_dragging)
{
_touchingPoint.x = (int) initx;
_touchingPoint.y = (int) inity;
}
}
}
이미지를움직여주는thead run부분
//움직일려는 이미지
canvas.drawBitmap(q, Joy.xplus/4, Joy.yplus/4, null);
canvas.drawBitmap(joybg, 670,350, null);
//터치값제한
Rect asd=new Rect();
asd.set(650,350,770,470);
//조이패드 를 그려주는부분
if(asd.contains(Joy._touchingPoint.x, Joy._touchingPoint.y) == true){
canvas.drawBitmap(joy,Joy._touchingPoint.x - 26, Joy._touchingPoint.y - 28, null);
}
else{
canvas.drawBitmap(joy,690*mapcreate.Scale_X, 370*mapcreate.Scale_Y, null);
}
위소스로 게임조이패드를 만드는중인데 버튼을누르면 이미지가움직이는방식인데
조이패드를 터치하면 이미지가움직이는데
패드를 누르고있는상태에서 터치좌표값이변할때마다 이미지가 움직이는데
(한번누른상태로 가만히있어서 터치좌표값이안변한경우 한번움직이고 안움직임)
좌표값이안변해도 누르고있을시 움직이게 처리할려면 어디부분에 반복처리를해야할까요?




MotionEvent.ACTION_MOVE 를 사용하면 될것같네요.