我有一個簡單的 Processing 3 應用程式,我剛剛遷移到 Processing 4。
舊版本有一些全域變數針對 1920x1080 顯示幕進行了微調,所以在移植時我決定讓它更加動態,并讓這些全域變數依賴于 displayWidth 和 displayHeight .
現在,當我通過 IDE 啟動應用程式時,它作業得很好:
但是,如果我匯出應用程式(檔案 > 匯出應用程式 > Windows 64 位包含 Java),就會發生這種情況:

我的卡片影像是 svg,所以我認為它們看起來如此像素化很奇怪,所以我的猜測是,由于某種原因,畫布的尺寸正確,但它也被拉伸了。
這只是一個猜測,我可能完全錯了。無論如何,尺寸是錯誤的,我想解決這個問題,但我不知道如何解決。
誰能幫我?
我的代碼如下:
//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上找到,但我認為只有上面的部分是相關的)
編輯:
我做了更多的測驗,我發現:
- IDE 啟動的應用程式和匯出的應用程式都檢測到
displayWidth并displayHeight正確檢測到 2560 和 1440 內部settings()。 - IDE啟動
displayWidth的應用程式displayHeight在.settings()displayWidthdisplayHeightsettings() - 這兩個應用程式的寬度和高度分別為 1562 和 1217。
- 似乎
displayDensity()在 IDE 中回傳 1,在匯出時回傳 2。此外,如果我在 IDE 中嘗試強制pixelDensity()設定為 2,我會收到警告說我的顯示幕不支持它。
我不知道為什么會發生這一切,但問題現在很清楚:匯出的應用程式認為我的 2560x1440 顯示幕實際上是 1707x960 顯示幕,因此在繪制 1562x1217 畫布時它變得很大。
是的,我確實嘗試pixelDensity(displayDensity())過,但這只會導致匯出的應用程式畫布更大。
uj5u.com熱心網友回復:
我發現這是由于處理 4(beta 8)的一些錯誤。
不幸的是,我沒有時間也不會查明確切的問題,但是我可以分享一個我發現的可行解決方案:降級到處理 3。
降級并重新匯出應用程式修復了它。
希望這個問題將在 Processing 4 的未來版本中得到解決。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/477307.html
上一篇:將SVG放置在任何螢屏的底部
