我想为一个物体实现一个触控。当我连续滑动时,不用手指离开屏幕,物体也必须沿着那条路移动。
1.单次触摸时,物体不应移动。
2.如果滑动/拖动一点,物体必须朝那个方向移动。如果滑动/拖动更多,物体应移动更多。
我发现这个游戏在Play商店中具有我想要实现的相同类型的控件。
https://play.google.com/store/apps/details?id=com.bentostudio.ballsvsblocks&hl=en
我实现了这样的基本滑动控制。
我的inputprocessor类中的fling()是这样的;
public boolean fling(float velocityX, float velocityY, int button) {
if (Math.abs(velocityX) > Math.abs(velocityY)) {
if (velocityX > 8) {
this.isSwipeRight = true;
} else if (velocityX < 0) {
this.isSwipeLeft = true;
}
}
return false;
}
并在update()中处理滑动,如下所示:
private void handleSwipe() {
if (MyInputProcessor.isSwipeLeft) {
obj.moveLeft();
System.out.println("u swiped left");
MyInputProcessor.isSwipeLeft = false;
} else if (MyInputProcessor.isSwipeRight) {
obj.moveRight();
System.out.println("u swiped right");
MyInputProcessor.isSwipeRight = false;
}
}
和移动对象的方法:
private float xSpeed=0;
private float leftAccel = 5f;
private float rightAccel = 5f;
public void moveLeft() {
xSpeed-= leftAccel;
setPosition(getX()+xSpeed, getY());
}
public void moveRight() {
xSpeed= rightAccel;
setPosition(getX()+xSpeed, getY());
}
但是我无法使其正常工作。只有基本的滑动才能正常工作。想一想如何在屏幕上用手指轻扫时能够保持平滑。
touchDragged()是更好的选择吗?
答案 0 :(得分:0)
Swing用于快速短暂移动。对于更长的连续手指移动,您应该使用平移方法: