亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試將 TTF 文件加載到我的游戲中時出現讀取字體數據錯誤的問題

嘗試將 TTF 文件加載到我的游戲中時出現讀取字體數據錯誤的問題

天涯盡頭無女友 2024-01-05 16:28:46
當使用我制作的 fontLoader 類加載字體時(下面的代碼),我收到錯誤:java.io.IOException:讀取字體數據時出現問題。這是我正在開發的 2D 游戲。我嘗試過其他加載字體的方法,但沒有任何效果。這是我的 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;    }}這是我調用 loadFont() 方法和我輸入的路徑的地方。它位于我的 Assets 類中,加載并保存我的所有游戲資源。我知道字體文件的路徑是正確的,因為我確定并且可以從字體文件夾加載其他圖像和內容作為測試。我還檢查了十遍以確保我寫的是正確的名字。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);此類的其余部分被切斷,因為不需要其中的信息。這是我運行代碼時遇到的錯誤。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貢獻1786條經驗 獲得超11個贊

我能夠使用此代碼解決問題!


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;

    }


查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 444 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號