当前位置: 首页 > 知识库问答 >
问题:

尝试更改屏幕边缘的速度不起作用

沙靖琪
2023-03-14

结果应该只是导致屏幕边缘的反弹效果,但相反,对象左右抽搐,但不会像向右移动一样向左移动......

这是移动矩形的方法;(此处的输入是在 if 语句中更改的相同“xVelocity”,它之所以这样做,是因为有多个对象)

public void moveX (float x) {
    if(rectangle.right >= Constants.SCREEN_WIDTH || rectangle.left <= 0){
        xVelocity = -xVelocity;
    }
    rectangle.left += x;
    rectangle.right += x;
}

此方法仅应用于更新方法中的不同矩形,它们向右移动即可,但我不确定转身有什么问题。

共有1个答案

令狐烨烨
2023-03-14

假设< code>SCREEN_WIDTH为100,< code>right值为95,< code>xVelocity值为10。

现在调用移动X(x高速)

首先,xVelocity保持不变,然后right递增到105。

再次调用moveX(xVelocity)

xVelocity更改为-10,然后right10。

再次调用moveX(xVelocity)

x 垂直度变回 10,然后递减为 105,因为参数 x 是 -10。

现在,我们又回到了与第一次调用后相同的条件,因此您的块在屏幕边缘来回抖动。

为了防止这种情况,您可以使用:

if(rectangle.right >= Constants.SCREEN_WIDTH) {
    xVelocity = -Math.abs(xVelocity);
} else if ( rectangle.left <= 0) {
    xVelocity = +Math.abs(xVelocity);
}

 类似资料:
  • 问题内容: 我怎样才能让一个窗口(如,,,,等)预留屏幕的边缘,就像一个码头,任务栏,Trillian的,或者微软的OneNote可以吗?我的目标是尽可能使用标准的JDK库。 问题答案: 此行为非常特定于Windows操作系统,因此无法在标准JDK或AWT / Swing中执行此操作,因为它们需要在多个不同的操作系统上一致地工作。 与您想要的最接近的等效方法是获取当前屏幕的边界并移动/调整窗口大小

  • 问题内容: 我的后退滑动功能有效,但仅在屏幕边缘有效。如何在屏幕上的任何地方工作? 问题答案: 苹果在这里说: InteractivePopGestureRecognizer 手势识别器负责将顶视图控制器从导航堆栈中弹出。(只读) @property(非原子,只读)UIGestureRecognizer * interactivePopGestureRecognizer 导航控制器将此手势识别器安

  • 问题内容: 我有一个div,我希望将其部分定位在屏幕外,如下所示: 但这会增加页面的大小,使其可以向右滚动。有什么办法可以使该div的一半隐藏并防止滚动查看它? 问题答案: 是的,只需使用创建一个封闭的div ,如下所示:

  • 我试图理解一款支持不同屏幕大小的游戏(android)中的速度概念。 假设我有一个精灵,从横向模式的右端到左端需要10秒。帧速率并不稳定,所以有时会持续30秒,然后突然变为10秒。但我还是希望我的雪碧从一端到另一端需要10秒钟。我该怎么做? 这就是我所理解的: 通过将屏幕宽度除以从一端到另一端获取精灵的时间,可以获得基本速度。如果有稳定的帧速率,则基本速度是精灵每秒应添加到当前位置的速度。然而,我

  • 我有一个可折叠的导航条构建与bootstrap 4。我使用了col-sm-2和navbar-expand-sm来使它以相同的屏幕尺寸折叠成一个汉堡包,它应该占据整个宽度。 问题是在sm屏幕尺寸以上,我希望它有h-100,所以它是一个侧栏,但作为sm/xs,我希望它只是占用拨动按钮所需的空间。 有没有办法用bootstrap来实现这一点,或者我被困在jquery中添加/删除h-100类?

  • 问题内容: 在Linux中使用C,是否可以更改查看屏幕的亮度?除了在我安装的Ubuntu和Fedora上运行之外,这不是便携式的。我在问我如何与OS交互以更改亮度。 问题答案: 首先,请从以下列表中选择ubuntu pacakges,该工具可让您管理屏幕的亮度(提示:这取决于品牌) 选择之后, 应该让您走上正确的路