- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是我尝试添加 touchDragged 的代码,我尝试使用拖动方法通过 touchDragged 功能使对象左右移动。
问题是,当我在屏幕右侧滑动时,无论是向左还是向右滑动,对象仅向右移动。当我向左或向右滑动时,对象仅向左移动。
我有什么遗漏吗?
输入类及其下方的对象类。
倾斜 Action 也与此相同还是有所不同?如果能解释一下就好了。
输入类如下
public class Input implements InputProcessor
{
private Kame myKame;
public Input(Kame kame) {
myKame = kame;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
myKame.onClick();
return true; // Return true to say we handled the touch.
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
myKame.onClick();
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
myKame.onSwipe(screenX, screenY, pointer);
return true;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}
Kame 类如下:
public class Kame
{
private Vector2 position;
private Vector2 velocity;
private Vector2 acceleration;
private int width;
private int height;
public float x;
public Kame(float x, float y, int width, int height) {
this.width = width;
this.height = height;
position = new Vector2(x, y);
velocity = new Vector2(0, 0);
acceleration = new Vector2(0, 460);
}
public void update(float delta) {
}
public boolean onSwipe(int velocityX, int velocityY, int delta) {
position.add(position.cpy().scl(delta));
// if (Math.abs(velocityX) < Math.abs(velocityY)) {
if (velocityX > 136) {
position.x += 3;//x cordinate
velocity.y += 10;
} else if (velocityX < 136) {
position.x -= 3;
velocity.y += 10;
} else {
// Do nothing.
}
// } else {
// Ignore the input, because we don't care about up/down swipes.
// }
return true;
}
public float getX() {
return position.x;
}
public float getY() {
return position.y;
}
public float getWidth() {
return width;
}
public float getHeight() {
return height;
}
}
最佳答案
此调用 onSwipe
:
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
myKame.onSwipe(screenX, screenY, pointer);
return true;
}
似乎与 onSwipe
的实现不匹配:
public boolean onSwipe(int velocityX, int velocityY, int delta) {
这里有几个问题。
传递给screenX
的screenY
和touchDragged
参数是屏幕坐标。它们的范围介于 0 和屏幕的宽度(或高度)之间。 onSwipe
表示它需要一个“速度”(尽管内部的算法似乎并没有这样对待它)。
pointer
签名中的 touchDragged
是光标的 ID 号(想象一下在触摸板上使用 4 个手指,“指针”标识哪个手指是哪个手指)。您将 is 用作“增量”。
您可以将 screenX
与 pos.x
进行比较,然后根据 pos.x
是否小于或大于 screenX
,在 pos.x
中加或减 3。
计算实际速度需要跟踪位置的变化(这意味着跟踪先前的触摸位置),然后按帧速率进行缩放(将 delta
传递给 render
)。
关于java - libgdx 上的 touchDragged 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663509/
我有一个简单的问题 - 我正在尝试对 Actor 进行拖动,但我看到了奇怪的效果 - 当我尝试拖动 Actor 时,它开始闪烁并随机改变位置。这是一个短视频:https://youtu.be/KpGu
在处理监听器类并实现多个触摸手势的处理时,我遇到了一个可能的错误。 代码实现 public class MyListener extends ClickListener { private L
在此图像中如何使用 touchDragged 拖动此 仅在 x 轴上?? 这是我执行此操作的代码: iBtnDrag = new Image(tBtnDrag); iBtnDrag.addListen
下面是我尝试添加 touchDragged 的代码,我尝试使用拖动方法通过 touchDragged 功能使对象左右移动。 问题是,当我在屏幕右侧滑动时,无论是向左还是向右滑动,对象仅向右移动。当
我有一个 Actor ,我想通过触摸拖动来移动它。 class Tile extends Actor { Tile (char c) { addListener(new Inp
我目前正在学习 libgdx 游戏编程,现在我已经学会了如何使用 touchDown 但我不知道如何使用 touchDragged。计算机如何知道手指被拖动的方向(用户是否向左或向左拖动)对) 最佳答
我想做的是通过在 Android 设备上拖动手指来左右移动一个矩形。我希望当我停下来而不抬起手指时,矩形就会停止。这可能吗? 我的InputHandler代码: @Override public b
我创建了 Button actor 的二维数组,然后添加了 new ClickListener() { touchDragged } 如下代码: buttons = new Button[3][3];
我正在尝试让鱼角色在玩家放手指的任何地方移动。我正在使用 libgdx 的触摸拖动来执行此操作。出于某种原因,注册触摸的 x 和 y 坐标只给我一个数字,而且似乎不在屏幕上。我已经阅读了与 libgd
我需要你的帮助! import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputProcessor; import com.badlogic.gd
我有一个 Actor 在舞台上,虽然被击中,并且被称为触地得分,但没有被称为触地得分和触地得分。有什么问题吗? ............ stage = new Stage(0, 0, true
我是一名优秀的程序员,十分优秀!