gpt4 book ai didi

java - 如何在libgdx中通过单击和双击实现不同的事件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:13 26 4
gpt4 key购买 nike

我正在使用 LibGdx 开发安卓游戏。我已经在我的 InputHandler 类中实现了手势监听器类。现在在点击方法中,我必须分别在单击和双击时实现两个功能,即短跳和长跳。当我尝试使用函数的计数值来实现它时,问题是当我双击屏幕时,计数值先变为1然后变为2,因此它不会进入第二个if语句并且出现短跳转的特征.那么如何区分单跳和双跳呢?下面是代码

@Override
public boolean tap(float x, float y, int count, int button) {
// TODO Auto-generated method stub

if(count==1)
{
//feature 1
}
if(count==2)
{
//feature 2

}


return true;
}

最佳答案

我想到了两个解决方案:

  1. 使用延迟技术,这将伴随以下步骤:

    • 当 tap-count 为 2 时:双击触发 Action
    • 当tap-count为1时:WAITING一段时间,如果没有点击第二次则触发点击 Action

代码应该是这样的:

if(count==1)
{
if(wait) //wait is a boolean tells if it was tapped once already
{
if(getCurrentTime() - startTime > interval) //getCurrentTime() return current time or frame count or something
{
wait = false;
//feature 1
}
}
else
{
wait = true;
startTime = getCurrentTime(); //start time keeps the time when tapped first one
}
}
if(count==2)
{
//feature 2

}


return true;
}

我在这里看到的问题首先是“如何选择足够长的时间间隔来等待第二次点击?” - 如果你选择短,将无法进行双击,如果太长,则会出现延迟,用户会看到角色在点击后不会直接跳跃

  1. 分块跳跃并根据点击次数触发它们

而这取决于你的“跳跃”机制。如果它是这样的:

一个。加力跳跃

B。持续增加一些力量一段时间以保持物体在空中

C。避免施加力将物体放回地面

您可以修改时间以使物体在空中停留更长时间。如果你的“跳跃机制”更像是脉冲加力(在上面的例子中它会是没有 B 点的变体)你可以再次在 A 中添加力一段时间并且如果用户在此间隔结束之前第二次点击继续添加它只是更长。

此解决方案消除了滞后问题,但取决于您选择的“跳跃机制”。

问候,迈克尔

关于java - 如何在libgdx中通过单击和双击实现不同的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32228578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com