代码之家  ›  专栏  ›  技术社区  ›  OMGPOP

libgdx AssetManager预加载ttf字体不工作

  •  1
  • OMGPOP  · 技术社区  · 8 年前

    我在应用程序启动时执行此代码

    val resolver = InternalFileHandleResolver()
    asset.setLoader(FreeTypeFontGenerator::class.java, FreeTypeFontGeneratorLoader(resolver))
    asset.setLoader(BitmapFont::class.java, ".ttf", FreetypeFontLoader(resolver))
    
    val menuFont = FreeTypeFontLoaderParameter()
    menuFont.fontFileName = FONT_FN
    menuFont.fontParameters.size = 10
    asset.load(FONT_MENU, BitmapFont::class.java, menuFont)
    
    val gameFont = FreeTypeFontLoaderParameter()
    gameFont.fontFileName = FONT_FN
    gameFont.fontParameters.size = 15
    asset.load(FONT_GAME, BitmapFont::class.java, gameFont)
    
    asset.finishLoading()
    

    这个 asset AssetManager

    const val FONT_FN = "others/font.ttf"
    const val FONT_MENU = "FONT_MENU"
    const val FONT_GAME = "FONT_GAME"
    

    现在我有了这些助手函数:

    private fun addLabel(text: String, x: Float, y: Float, font: BitmapFont, color: Color, stage: Stage): Label {
        val label = Label(text, Label.LabelStyle(font, color))
        label.setPosition(x, y)
        stage.addActor(label)
        return label
    }
    
    fun addLabelForMenu(text: String, x: Float, y: Float, stage: Stage): Label {
         val font = asset.get(FONT_MENU, BitmapFont::class.java)
         val color = Color.WHITE
         return addLabel(text, x, y, font, color, stage)
    }
    
    fun addLabelForGame(text: String, x: Float, y: Float, stage: Stage): Label {
         val font = asset.get(FONT_GAME, BitmapFont::class.java)
         val color = Color.WHITE
         return addLabel(text, x, y, font, color, stage)
    }
    

    呼叫时游戏崩溃 addLabelForMenu :

    com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: others/font.ttf
    

    我在这里关注维基页面: https://github.com/libgdx/libgdx/wiki/Managing-your-assets

    1 回复  |  直到 8 年前
        1
  •  0
  •   AAryan    8 年前
    const val FONT_FN = "others/font.ttf"    // Make sure your `font.ttf` file is inside `others` folder
    

    添加 .ttf 用于加载和检索的文件名的扩展名。

    所以改变

    const val FONT_MENU = "FONT_MENU"
    const val FONT_GAME = "FONT_GAME"
    

    const val FONT_MENU = "FONT_MENU.ttf"
    const val FONT_GAME = "FONT_GAME.ttf"