天涯盡頭無(wú)女友
2024-01-05 16:28:46
當(dāng)使用我制作的 fontLoader 類加載字體時(shí)(下面的代碼),我收到錯(cuò)誤:java.io.IOException:讀取字體數(shù)據(jù)時(shí)出現(xiàn)問(wèn)題。這是我正在開(kāi)發(fā)的 2D 游戲。我嘗試過(guò)其他加載字體的方法,但沒(méi)有任何效果。這是我的 Font 類,帶有 loadFont 方法。package dev.java2dgame.gfx;import java.awt.Font;import java.awt.FontFormatException;import java.io.IOException;import java.io.File;public class Fonts { public static Font loadFont(String path, float size){ try { return Font.createFont(Font.TRUETYPE_FONT, Font.class.getClass().getResourceAsStream(path)).deriveFont(Font.PLAIN, size); } catch (FontFormatException | IOException e) { e.printStackTrace(); System.exit(1); } return null; }}這是我調(diào)用 loadFont() 方法和我輸入的路徑的地方。它位于我的 Assets 類中,加載并保存我的所有游戲資源。我知道字體文件的路徑是正確的,因?yàn)槲掖_定并且可以從字體文件夾加載其他圖像和內(nèi)容作為測(cè)試。我還檢查了十遍以確保我寫(xiě)的是正確的名字。public class Assets { public static final int width = 64, height = 64; public static BufferedImage nothing, floor, aud_floor, gym_floor, front_wall, left_wall, right_wall, shelf_wall, whiteboard_wall, closed_window, storm_window, bookshelf1, bookshelf2; public static Font font36; public static BufferedImage saw; public static SpriteSheet tileSheet; public static void init() { font36 = Fonts.loadFont("/fonts/munro.ttf", 16); tileSheet = new SpriteSheet("/sprites/tilesheet.png"); saw = ImageLoader.loadImage("/sprites/singlesprites/woodshop_saw.png"); nothing = tileSheet.crop(width, height, width, height);此類的其余部分被切斷,因?yàn)椴恍枰渲械男畔?。這是我運(yùn)行代碼時(shí)遇到的錯(cuò)誤。java.io.IOException: Problem reading font data. at java.desktop/java.awt.Font.createFont0(Font.java:1183) at java.desktop/java.awt.Font.createFont(Font.java:1052) at dev.java2dgame.gfx.Fonts.loadFont(Fonts.java:12) at dev.java2dgame.gfx.Assets.init(Assets.java:21) at dev.java2dgame.main.Game.init(Game.java:54) at dev.java2dgame.main.Game.run(Game.java:93) at java.base/java.lang.Thread.run(Thread.java:835)
1 回答

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
我能夠使用此代碼解決問(wèn)題!
public static Font loadFont(String path, float size){
try {
InputStream fileStream = Fonts.class.getResourceAsStream(path);
Font myFont = Font.createFont(Font.TRUETYPE_FONT, fileStream);
return myFont.deriveFont(Font.PLAIN, size);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
System.exit(1);
}
return null;
}
添加回答
舉報(bào)
0/150
提交
取消