我有一个简单的处理3应用程序,我刚刚迁移到了处理4。
旧版本有一些为1920x1080显示精调的全局变量,因此在移植时,我决定使其更动态,并使这些全局变量依赖于displayWidth和displayHeight。
现在,当我通过IDE启动应用程序时,它运行得很好:

但是,如果我导出应用程序(File >> Windows 64位包含Java),则会发生以下情况:

我的卡片图像是svgs,所以我认为它们看起来像像素是很奇怪的,所以我猜想,由于某种原因,画布的尺寸是合适的,但它也被拉伸了。
这只是猜测,我可能完全错了。不管怎样,尺寸是错的,我想修一下,但是我不知道怎么做。
有谁可以帮我?
我的代码如下:
//Global variables.
int frameRate = 30;
int cardWidth;
int cardHeight;
int border;
int edge;
int cardsetSpace;
int cardSpace;
int textSize;
int yOffset;
float savedGameWritingDurationLeft = 0;
int loadingWritingDurationLeft = 0;
boolean isLoading = false;
final String loadingWriting = "CARICAMENTO...";
final String savedGameWriting = "PARTITA SALVATA";
//Global variables.
void settings()
{
cardWidth = (int) (displayWidth / 15.36);
cardHeight = (int) (displayHeight / 6.17);
border = cardWidth / 10;
edge = border / 3;
cardsetSpace = border + edge * 2;
cardSpace = (int) (cardHeight / 4.6);
textSize = displayHeight / 54;
yOffset = textSize + 8;
size(cardWidth * 8 + cardsetSpace * 9, cardHeight * 5 + textSize * 2);
}(整个代码可以在GitHub上找到,但我认为只有上面的部分是相关的)
编辑:
我做了更多的测试我发现:
displayWidth和displayHeight,分别在settings()内部检测到2560和1440。displayWidth和displayHeight在settings()之外,而导出的应用程序检测到displayWidth的1707和settings()之外的displayHeight的960。displayDensity()返回1,导出时返回2。此外,如果我试图强制pixelDensity()到2,在IDE中,我会收到一个警告,我的显示器不支持它。我不知道为什么会发生这一切,但问题现在很清楚了:导出的应用程序认为我的2560x1440显示器实际上是1707x960显示器,所以当绘制1562x1217画布时,它会变得很大。
是的,我确实尝试过pixelDensity(displayDensity()),但这只会使导出的应用程序画布更大。
发布于 2022-05-18 17:06:42
我发现这是由于处理4 (beta 8)的一些错误造成的。
不幸的是,我没有时间也没有意愿来确定确切的问题,但是我可以分享我找到的一个可行的解决方案:降级到处理3。
降级和再导出的应用程序修复了它。
希望这个问题将在处理4的未来版本中得到解决。
https://stackoverflow.com/questions/72152864
复制相似问题