所以我的问题是我试图在屏幕中间放置一个精灵。如何做到这一点非常简单,但是在运行时进行的计算是错误的。我得出的结论是,浮点数在 Java 中变得混乱。
所以,这是我现在拥有的代码,它有效:
float posX = ((1280f / 2f) - 128f);
float posY = ((720f / 2f) - 112.5f);
splash.setScale(1.5f);
splash.setPosition((posX), (posY));
但是,如果我用这些变量替换上面的分区:
private float screenCenterW = (1280.0f / 2f);
private float screenCenterH = (720.0f / 2f);
private float splashCenterW = (225.0f / 2f);
private float splashCenterH = (256.0f / 2f);
事情似乎不再起作用了。在我看来,posX 和 posY 计算的第一部分结果为 0.0,而我的精灵最终出现在左上角,半可见。
为什么如果我用这些变量替换不同的计算,它就会停止工作?
编辑:
所以澄清一下:
这就是我希望代码的样子:
private float screenCenterW = (1280.0f / 2f);
private float screenCenterH = (720.0f / 2f);
private float splashCenterW = (225.0f / 2f);
private float splashCenterH = (256.0f / 2f);
float posX = (screenCenterW - splashCenterW);
float posY = (screenCenterH - splashCenterH);
splash.setScale(1.5f);
splash.setPosition((posX), (posY));
然而,这会使事情出错。尽管对我来说,它们看起来与其他计算完全相同。我在某个地方犯了一个菜鸟错误吗?我一直在用数字从底部到顶部构建这个计算,它可以工作,但是一旦我用变量替换其中一个计算(将它保存在变量中)它就会停止工作,并且精灵会消失screen,好像 screenCenterW 和 screenCenterH 通过 2f 的除法计算为 0.0。screenWidthH 示例:(1280f / 2f) = 0 | 0 - 112.5f = -112.5f
为什么我在调试时遇到问题是因为我不知道如何在我正在使用的 AndEngine for Android 的屏幕上显示这些计算。对于没有详细说明,我真诚地道歉,我现在意识到这个问题一开始并没有说太多,但我希望这能澄清我的问题。如果有人使用 AndEngine 可以帮助我,那就太棒了。