- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Actor ,我想通过触摸拖动来移动它。
class Tile extends Actor {
Tile (char c) {
addListener(new InputListener() {
private float prevX, prevY;
@Override
public void touchDragged (InputEvent event, float x, float y, int pointer) {
Gdx.app.log(TAG, "touchDrag: (" + x + "," + y);
Tile cur = (Tile)event.getTarget();
cur.setPosition( //this call seems to cause the problem
cur.getX() + (x - prevX),
cur.getY() + (y - prevY) );
prevX = x; prevY = y;
}
});
}
@Override
public void draw(Batch batch, float alpha) {
batch.draw(texture, getX(), getY());
}
}
瓷砖在被拖动时会颤抖,移动速度大约是触摸速度的一半。这由输出坐标的日志行确认,如下所示:
I/Tile: touchDrag: (101.99991,421.99994)
I/Tile: touchDrag: (112.99985,429.99994)
I/Tile: touchDrag: (101.99991,426.99994)
I/Tile: touchDrag: (112.99985,433.99994)
I/Tile: touchDrag: (101.99991,429.99994)
I/Tile: touchDrag: (112.99985,436.99994)
如果我删除注释行(即不重置 Actor 的位置),拖动输出看起来更合理:
I/Tile: touchDrag: (72.99997,78.99994)
I/Tile: touchDrag: (65.99997,70.99994)
I/Tile: touchDrag: (61.99997,64.99994)
I/Tile: touchDrag: (55.99997,58.99994)
I/Tile: touchDrag: (51.99997,52.99994)
I/Tile: touchDrag: (42.99997,45.99994)
有什么想法吗?感谢您的关注!
最佳答案
InputListener 方法中的坐标是相对于 Actor 的位置给出的,因此如果您同时移动 Actor,则它们无法与之前的值进行比较。
相反,存储原始位置并相对于该位置移动。数学可以适应您的 Action :
addListener(new InputListener() {
private float startX, startY;
@Override
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
startX = x;
startY = y;
return true;
}
@Override
public void touchDragged (InputEvent event, float x, float y, int pointer) {
Tile cur = (Tile)event.getTarget();
cur.setPosition(
cur.getX() + (x - startX),
cur.getY() + (y - startY) );
}
});
关于android - InputListener.touchDragged 中的鼠标坐标不一致(闪烁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39987028/
我编写了以下代码: public void show () { skin = new Skin (Gdx.files.internal("PlayButton.json")); but
我正在使用 LIBGDX 构建一个简单的游戏,我遇到了这个恼人的问题。 我有一个 MenuScreen.java 类,它看起来像这样: Here是 pastebin 上的完整类(class) 重要的部
我正在使用MouseOverArea制作一个按钮。经过一番尝试和错误后,我意识到我可以重写 InputListener 中的方法,以便在收到输入事件通知时执行特定操作。 例如,当光标位于组件上方时按下
我用 libgdx 写了一个游戏。一切正常,除了一件事: 当玩家失败时,屏幕上会显示“游戏结束”纹理。我想为游戏添加一个“点击屏幕重新启动”功能,但为此,我需要将一个 eventListener 附加
哦,好吧...我遇到了一个问题,我不知道出了什么问题。 我有一个舞台, table 内有一些瓷砖(128x128 大小的方形 Actor )。 我想要做的是,当我向上滚动时,相机缩小,当我向下滚动时,
我已经尝试在 Actor 上使用 InputListener,但似乎没有调用 touchUp。其他所有方法都对我有用。 stage = new Stage(new ScreenViewport());
我将下表按钮放入 MenuScreen.java 文件中以制作“开始游戏”按钮: // register the button "start game" TextButton star
我尝试将 InputListener 与 Actor 一起使用,但它不起作用。我真的不知道为什么。我找到了很多关于它的信息并查看了官方文档,但没有一个对我没有帮助。 当我触摸 sprite 时,我的日
我有一个 Actor ,我想通过触摸拖动来移动它。 class Tile extends Actor { Tile (char c) { addListener(new Inp
我有一个带有 OrthographicCamera 的舞台,还有一个带有 addListener setter (来自 actor 类)的 InputListener 的 Actor。问题是 acto
我能够绘制我的按钮,但是当我点击/“触摸”它们时没有任何反应,而且我不知道我做错了什么。有人可以帮忙吗?触摸时,textButtonStyle 不应该更改为“ToothButton”吗?我不应该为 A
我是 libgdx 的新手,我在这里想要实现的是我希望我的 GestureDetector 与 InputListener 同时工作。我的左边有两个按钮,即使我同时开始滑动(多点触控),我也需要它们保
我正在使用 Xith3d 在 java 中启动一个 3d 游戏项目。它使用 jagatoo 进行输入,并且我已正确设置所有内容。这是我的测试代码: import org.jagatoo.input.I
我想使用 InputListener 中的 exit() 方法来查看光标是否在按钮内。 这是 libGDX 文档中的解释。 public void exit(InputEvent event, flo
我正在尝试使用 Libgdx Scene2dui 库并希望捕获鼠标触地事件。我有一个自定义 Actor 和一个实例化 Actor 实例并尝试监听触摸事件的对话框。由于某种原因,触摸事件没有被捕获。 p
我是一名优秀的程序员,十分优秀!