我正在向屏幕绘制一个 Rect,并尝试在用户向某个方向滑动时将其向上/向右/向下/向左移动。当用户向上滑动时,我希望矩形向上移动 50 像素,并且所有四个方向都相同。
我有滑动检测工作,但是我不知道如何实际移动矩形。我怎样才能在用户滑动的方向上移动 Rect r ?理想情况下,如果可能的话,我希望它能够在一个方向上平滑移动,而不仅仅是在滑动方向上捕捉 50px。
我目前拥有的:
主活动.java
public class MainActivity extends Activity {
float x1,x2;
float y1, y2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = new GameView(this);
setContentView(v);
}
public boolean onTouchEvent(MotionEvent touchevent) {
switch (touchevent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP:
{
x2 = touchevent.getX();
y2 = touchevent.getY();
double r = Math.atan2(y2 - y1, x2 - x1);
if (r > -2.25 && r < -0.75) {
Toast.makeText(getApplicationContext(), "Up", Toast.LENGTH_SHORT).show();
//Move rect 50px up
} else if (r > -0.75 && r < 0.75) {
Toast.makeText(getApplicationContext(), "Right", Toast.LENGTH_SHORT).show();
//Move rect 50px right
} else if (r > 0.75 && r < 2.25) {
Toast.makeText(getApplicationContext(), "Down", Toast.LENGTH_SHORT).show();
//Move rect 50px down
} else if (r > 2.25 || r < -2.25) {
Toast.makeText(getApplicationContext(), "Left", Toast.LENGTH_SHORT).show();
//Move rect 50px Left
}
break;
}
}
return false;
}
}
我在 GameView.java 中创建 Rect
public class GameView extends View {
public Rect r = new Rect(100, 100, 300, 300);
public Paint p = new Paint();
public GameView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
//Fill
p.setStyle(Paint.Style.FILL);
p.setColor(Color.MAGENTA);
canvas.drawRect(r, p);
}
}
我设法自己弄明白了。我最终使用 .offsetTo(int newX, int newY) 将矩形移动到新位置,同时保持它的 Width 和 Height 属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句