馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
以下是我參考網路上的文章寫出來的觸碰移動物件的程式碼
public class MoveTest1Activity extends Activity {
private MyCanvasDraw cDraw;
private LinearLayout layout;
private TextView tv;
private int x=200;
private int y=200;
Rect rect = new Rect();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cDraw=new MyCanvasDraw(this);
layout=(LinearLayout)findViewById(R.id.tableLayout1);
tv=(TextView)findViewById(R.id.textView1);
layout.addView(cDraw);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X=(int)event.getX();
int Y=(int)event.getY();
float dx;
float dy;
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
tv.setText(X+":"+Y);
if(this.x==event.getX()&& this.y==event.getY())
{
this.x=X;
this.y=Y;
cDraw.invalidate();
break;
}
case MotionEvent.ACTION_MOVE:
tv.setText(X+":"+Y);
dx=event.getX()-this.x;
dy=event.getY()-this.y;
this.x+=dx;
this.y+=dy;
cDraw.invalidate();
break;
case MotionEvent.ACTION_UP:
tv.setText(X+":"+Y);
break;
}
return super.onTouchEvent(event);
}
public class MyCanvasDraw extends View
{
public MyCanvasDraw(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint mPaint=new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.RED);
canvas.drawCircle(x, y, 50, mPaint);
}
}
}
但是執行後圖片按我點下去的xy軸座標有點誤差(就滑鼠可能點在(20,20)但圖片在(40,40)處)
還有我現在是點螢幕上的任何地方,圖片都會跟著移過去
該怎麼設定說要我點再圖騙上的時候 圖片才會跟著點擊的地方移動?
麻煩各位前輩了! |