actionscript-3 - 加载和卸载多语言 Flex 应用程序的字体

标签 actionscript-3 flash apache-flex fonts

我的 Flex 应用程序允许人们输入文本。有多种字体可供选择。因为它是一个多语言应用程序,所以其中一些字体(例如中文)确实非常大 - 太大而无法嵌入所有字体。

我知道我可以load fonts at runtime via stylesheets - 我计划在人们选择字体时执行此操作(字体加载时稍等片刻不是问题)。我想要做的是再次卸载这些字体,这样如果人们选择一种字体然后选择另一种字体,应用程序就不会消耗大量内存。

不过,我看不出有什么办法可以做到这一点。我可以在运行时加载字体,但不能卸载它们。有任何想法吗?

我确实看到了 this question在 SO 上提到加载字体作为模块的一部分 - 我猜每个模块使用一种字体。优点是可以卸载模块。但是,正如发问者指出的那样,字体在模块之外是不可访问的。所以这似乎是一个死胡同。

如果这不可能,我会很遗憾地接受一个告诉我这是不可能的答案,但更有用的是替代策略!这一定是人们以前遇到过的非常常见的场景......

最佳答案

正如您的直觉所暗示的,这对于 flex 开发人员来说是一个相对常见的场景 - 必须有一个解决方案!

正如您所建议的,我会将样式表编译为模块,并在每个模块中嵌入字体(对于中文,我建议您尽可能指定 unicode 范围以节省字体大小:http://renaun.com/blog/2011/10/flash-embed-font-unicode-range-generator/)。

有 3 个应用程序域,您可以将模块加载到父应用程序中。看看这个:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e07.html .我相信 3 种方法中的 2 种允许您使用模块中的资源。最简单的方法是使用相同的应用程序域加载它 - 这意味着您假设模块中的类与父类相同。

确保您的构建系统使用与父应用程序相同版本的 sdk 编译模块。否则,您将遇到编码类的 ActionScript 运行时错误。

最后,您如何分析您的垃圾收集应用程序?您使用的是 Flash Builder 的内置分析器吗?在 Flex 应用程序上强制进行垃圾回收很烦人(据我所知,您必须调用 System.gc() 两次或类似的一些奇怪的巫术)。

关于actionscript-3 - 加载和卸载多语言 Flex 应用程序的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254418/

相关文章:

Flash CS5 - 当我更改文本属性时文本消失,除非我没有设置别名

javascript - 在 Adob​​e AIR HTML 应用程序中悬停时播放声音

javascript - 将第 3 方 Flash 组件集成到 Adob​​e Air 应用程序中?

java - 删除eclipse中的双倍间距

actionscript-3 - Flash Player 9 或 10+

flash - Flash游戏我应该使用MP3或WAV文件格式吗?

actionscript-3 - CRUD vs AGUD vs AFUD ...您的偏好命名约定是什么

php - 将位图数据从 Flex 发送到 Php

javascript - 如何在flash中关闭网页

actionscript-3 - 在闭包内的 'this' 关键字上