- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PlayN 构建一个涉及石头的游戏,用户必须在物理世界中移动(通过重力等)。我希望用户能够使用触摸板直接操纵石头,并通过以下方式给它们一个速度拖拽并扔掷它们。
现在我有一个实现,其中每个石头都在自己的层上,并且我在石头层上有一个监听器,该监听器将停用该石体的物理功能(当用户捕获它时)并在拖动完成后重新激活。
问题是监听器回调的执行似乎有延迟,这意味着在考虑重新激活物理引擎之前会显示许多帧,导致用户停止抓取后石头落下的延迟。
针对此类行为还有其他方法吗?我错过了什么吗?
谢谢!
layer.addListener(new Pointer.Adapter() {
@Override
public void onPointerStart(Event event) {
suspendPhysik = true;
getBody().setActive(!suspendPhysik);
}
@Override
public void onPointerEnd(Event event) {
suspendPhysik = false;
getBody().setActive(!suspendPhysik);
long deltatime = System.currentTimeMillis() - prevTimestamp;
Vec2 velocity = new Vec2((event.x()
* NewGame.physUnitPerScreenUnit - prevX)
/ deltatime,
(event.y() * NewGame.physUnitPerScreenUnit - prevX)
* NewGame.physUnitPerScreenUnit / deltatime);
getBody().setLinearVelocity(velocity);
}
@Override
public void onPointerDrag(Event event) {
x = event.x() * NewGame.physUnitPerScreenUnit;
y = event.y() * NewGame.physUnitPerScreenUnit;
setPos(event.x() * NewGame.physUnitPerScreenUnit, event.y()
* NewGame.physUnitPerScreenUnit);
}
});`
最佳答案
发现一个关于 playN 的有趣演示。
http://playn-2011.appspot.com/slides/index.html#34
在示例中作者使用以下代码:
touch().setListener(new Touch.Adapter() {
@Override
public void onTouchStart(Event[] touches) {
// Process touch events into a zoom start position.
}
@Override
public void onTouchMove(Event[] touches) {
// Update zoom based on touches.
}
});
此链接包含 Touch.Adapter 的文档 http://docs.playn.googlecode.com/git/javadoc/playn/core/Touch.Adapter.html#Touch.Adapter()
所以试试这个:
layer.addListener(new Touch.Adapter() {
@Override
public void onTouchStart(Touch.Event[] touches) {
suspendPhysik = true;
getBody().setActive(!suspendPhysik);
}
@Override
public void onTouchMove(Touch.Event[] touches) {
suspendPhysik = false;
getBody().setActive(!suspendPhysik);
long deltatime = System.currentTimeMillis() - prevTimestamp;
Vec2 velocity = new Vec2((touches[0].x() * NewGame.physUnitPerScreenUnit - prevX) / deltatime, (event.y() * NewGame.physUnitPerScreenUnit - prevX) * NewGame.physUnitPerScreenUnit / deltatime);
getBody().setLinearVelocity(velocity);
}
@Override
public void onTouchMove(Touch.Event[] touches)
{
x = touches[0].x() * NewGame.physUnitPerScreenUnit;
y = touches[0].y() * NewGame.physUnitPerScreenUnit;
setPos(x * NewGame.physUnitPerScreenUnit, y * NewGame.physUnitPerScreenUnit);
}
});
关于java - PlayN 用触摸板 throw 物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18308972/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我安装了 Synaptics 驱动程序,因此我可以手动禁用/启用触摸板。 这是我使用 C# 启用/禁用触摸板的方式: private void Switch_Mouse(int i = 0) // 1
我有QToolButton: btn_ = new QToolButton(this); btn_->setFocusPolicy(Qt::NoFocus); btn_->setAutoRepeat(
我想在内网中将android屏幕用作pc触摸板,所以对于我应该使用哪种协议(protocol)以及如何在 java 中创建 pc 服务器。 帮帮我。谢谢 最佳答案 它非常易于使用。在您的 Intran
我四处看了看,但找不到确凿的答案。是否可以在常规桌面浏览器中检测来自 Macbook 触摸板或其他笔记本电脑触控板的多点触摸手势和事件。 假设我想点击触摸板然后滚动(一种拖动滚动),但只有当有额外的手
在我的 libGDX 项目中,我想使用触摸板在屏幕上移动玩家。那已经有效了。现在我想沿着玩家移动的方向旋转玩家的“脸”。我已经用这段小代码尝试过,但我并没有真正工作 double degree; de
我正在尝试使用 TFT 触摸板构建菜单。现在我的问题是我无法在循环函数中绘制任何东西。 如果我在循环中编写任何绘制函数,屏幕就会变白。我认为这是因为屏幕需要一些时间来建立。所以我添加了一个延迟(100
我正在执行 Javascript onScroll。我的代码适用于任何普通计算机鼠标,但是当我使用笔记本的触摸板时,我遇到以下情况: 当手指移动滚轮时,我的鼠标会触发(大约 1 到 8 次)mouse
我有一个 Android 应用程序,我将移植到 Google Glass。 如何在我的 Android/Java 代码中以编程方式获取触摸板输入(用手指触摸框架的一侧)? 最佳答案 我错了吗,还是 G
我是一名优秀的程序员,十分优秀!