libgdx touchUp 事件
Posted
技术标签:
【中文标题】libgdx touchUp 事件【英文标题】:libgdx touchUp event 【发布时间】:2012-10-23 13:20:48 【问题描述】:我正在使用带有舞台作为按钮的演员。我可以检测到 touchDown/touchUp 事件何时在演员身上发生得很好,但是当用户点击演员然后继续将他们的手指从演员身上拖出时,touchUp 事件永远不会触发。我尝试改用退出事件,但它永远不会触发。在我的程序中,touchUp/touchDown 事件决定了移动以及按钮颜色,这取决于按钮是否被按下。所以我留下了一个永久“按下”的按钮,直到它再次被向下/向上点击。
我正在使用的代码示例:
stage.addListener(new InputListener()
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button)
Actor actor = stage.hit(x, y, true);
if (actor != null)
System.out.println("touchDown: " + actor.getName().toString());
return true;
public void touchUp (InputEvent event, float x, float y, int pointer, int button)
Actor actor = stage.hit(x, y, true);
if (actor != null)
System.out.println("touchUp: " + actor.getName().toString());
public void exit(InputEvent event, float x, float y, int pointer, Actor toActor)
System.out.println("exit");
);
【问题讨论】:
您使用的是什么版本的 libgdx?最新的好像没有Stage.addListener()
。也许这是在比您使用的版本更新的版本中修复的错误。
我正在使用 2012 年 10 月 20 日的夜间版本,libgdx.txt 说它是 0.9.3,然后我会尝试 0.9.6。
啊。好吧,我不太熟悉流血的边缘。如果我不得不猜测,我会说实现 touchDragged()
可能会有所帮助。
我也试过了:),但运气不好,它永远不会触发。
【参考方案1】:
如果你改变了
stage.addListener(new InputListener() );
到
stage.addListener(new ClickListener() );
它将识别 TouchUp 调用。它仍然能够处理 TouchDown 和 Exit 调用。
【讨论】:
为什么?这是一个错误吗?会修复吗?【参考方案2】:我遇到了同样的问题。我通过创建 boolean isDown
变量作为我的 GameScreen 类的字段来修复它。每当我的背景图像上发生 touchDown 时,我将 isDown 变量设为 true,而当 touchUp 发生时 - isDown = false。这样touchUp总是会发生。然后仍然在我的 GameScreen 渲染方法中检查 isDown 是否为真,如果是,我检查触摸是否与我的演员相交:
if (isDown)
if (pointIntersection(myActor, Gdx.input.getX(), Gdx.input.getY()))
// do something
else
// reverse the effect of what you did when isDown was true
其中pointIntersection方法是:
public static boolean pointIntersection(Image img, float x, float y)
y = Gdx.graphics.getHeight() - y;
if (img.x <= x && img.y <= y && img.x + img.width >= x && img.y + img.height >= y)
return true;
return false;
这是我发现的唯一解决方法。不过,它不是很漂亮,但对我有用。
【讨论】:
以上是关于libgdx touchUp 事件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ScnViewGestures.Forms 在 Xamarin.Forms 中使用 TouchDown 和 TouchUp 事件创建视图