因为最近要做一个项目,涉及到要输入文本,Flash的输入文本默认下是只能显示设备字体。连系统内的字体都不能设置,必须要嵌入才能输入。
as2的时代,可以用加载字体库的方式来解决,Adobe官方的解释太烦琐了,其实总结起来就是一个替换字体的过程,把外部库的自定义字体替换当前的输入字体。
例如如下:
如果是as2的话,新建一个Fla文件share.fla,然后在库里新建一个字体文件,然后设置他的标识为MyFont,随便选择系统内的一种字体,然后选择linkage里的导出as,导出runtime sharing,导出第一帧,然后在url处填写share.swf,然后编译成share.swf

然后新建主文件main.fla,同样在库里新建一个字体文件,然后设置他的url为share.swf,这样他就共享了share.swf里的字体文件,可以在场景里放一个textinput文件来做测试

这样嵌入字体的工作就完成了,as3文件不同的地方在于没有标识这个东西了,那我们在aa.swf(就是上面的share.swf)里设置Classname为自定义的字体名字zhr_font,然后在Main文件里也设置成zhr_font的ClassName


下面我们要说的是如何用程序来实现as3的中文动态嵌入加载,查了网上的一些资料,老外的做法是新建一个类,然后在类里直接embed这个font,然后最通过加载这个share.swf,然后反射出这个Font类,再注册一次使用,经试验,发现这样的做法英文是可以的,如果是中文,在编译share.swf的时候会报错
嵌入字体库文件类
package {
import flash.display.Sprite;
public class FontLibrary extends Sprite {
[Embed(systemFont=’Bank Gothic’, fontName=’emBank Gothic’, mimeType=’application/x-font’)]
public static var BankGothicFont:Class;
}
}
调用字体库文件类
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest(”fontlibrary.swf”));
private function completeHandler(event:Event):void {
var FontLibrary:Class = event.target.applicationDomain.getDefinition(”FontLibrary”) as Class;
Font.registerFont(FontLibrary.BankGothicFont);
var tf:TextField = new TextField();
tf.defaultTextFormat = new TextFormat(”emBank Gothic”, 12, 0);
tf.embedFonts = true;
tf.rotation = 15;
tf.text = “blah blah blahnblah blah blahnblah blah blah “;
addChild(tf);
}
这个是老外的做法,试验过后发现英文是可以没有问题的,但是如果是比较大的中文ttf,在嵌入字体库文件类那处就会有问题,mxmlc编译的时候会报错
这样我们的做法是,在Flash cs3里来做字体共享库,同样在库里新建一个字体

然后在主文件里加载,然后用反射的方法注册,再使用
var loader:Loader=new Loader;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.load(new URLRequest(”shared.swf”));
function completeHandler(event:Event):void {
var fontLibrary:Class=event.target.applicationDomain.getDefinition(”zhr_Font”) as Class;
trace(fontLibrary);
Font.registerFont(fontLibrary);
test();
}
function test() {
var _embeddedFonts:Array = new Array();
_embeddedFonts = Font.enumerateFonts(false);
trace(_embeddedFonts[0].fontName);
//trace(_embeddedFonts.length);
//var tx:TextField=new TextField();
//tx.type=”input”;
tx.embedFonts=true;
//tx.defaultTextFormat=new TextFormat(”zhr_Font”,20,0xFF0000);
var tf=new TextFormat(_embeddedFonts[0].fontName,20,0xFF0000);
//tx.embedFonts = true;
//tx.antiAliasType = AntiAliasType.ADVANCED;
tx.text=”你好”;
tx.setTextFormat(tf);
addChild(tx);
}

- 大小: 25.4 KB

- 大小: 24.4 KB

- 大小: 25.9 KB

- 大小: 23.1 KB

- 大小: 17.6 KB
分享到:
相关推荐
这篇“AS3字体嵌入终极教程”着重讲解了如何在Flash Player或Adobe AIR环境中处理字体嵌入,并提供了一个unicodeRange获取器,以支持新老文本引擎。 一、字体嵌入基础 在AS3中,有两种类型的字体嵌入:基本嵌入和...
在ActionScript 3 (AS3)中,动态加载字体是一种技术,允许开发者在应用程序运行时加载和使用新的字体。这可以极大地提高应用的灵活性,尤其是对于那些需要展示各种独特字体或者用户可定制字体的应用。本知识点将深入...
动态嵌入字体是一种在Flash(SWF)内容中使用特殊技术来实现字体显示的方法。这种方法主要是为了解决在Web上展示个性化或特定字体时遇到的问题,因为不同的用户计算机上可能并未安装所需字体,从而导致内容显示不...
1. **ActionScript 3 (AS3)**:AS3是Flash Professional中的编程语言,用于创建互动性的富媒体内容,如网页动画、游戏和应用程序。AS3相比之前的版本有更强的类型检查和性能提升,且语法更加严谨,支持面向对象编程...
在Flash AS3编程中,加载(Loading)是关键功能之一,允许开发者动态地在应用程序运行时引入外部资源,如图像、SWF文件、XML或文本数据。本资源包含了一个名为"loading_as3"的示例项目,其中包括了loading_as3.fla...
在Flash ActionScript3游戏开发中,将FLA中的资源嵌入到Flex或纯AS3项目是常见的需求。这些资源可能包括位图、字体、声音、动画等,它们是游戏视觉效果和交互体验的重要组成部分。本篇文章将详细讲解五种不同的嵌入...
首先,涉及到Flash和中文显示的关系,我们需要明白的是,Flash在显示文字时其实跟系统语言和嵌入字体有很大关系。由于Flash自身支持动态中文,因此只要正确嵌入中文字体,就可以保证中文在不同平台上的显示一致性。...
`Flash嵌入字体的进阶方法.txt`探讨了如何在AS3中嵌入和使用非标准字体,确保跨平台一致性。这可能涉及Font类、系统字体和嵌入字体的字形选择。 8. **动态文本加链接**: 在AS3中,可以通过TextFormat和...
这里的“3D效果”可能是指通过ActionScript 3(AS3)实现的,这是一种编程语言,用于为Flash内容添加动态功能和交互性。 描述中提到“以3D形式展示图片,流畅动态”,这表明这个源文件是一个3D图像滑动或旋转展示的...
AS3XLS是一款用于Adobe Flash Platform(包括ActionScript 3.0和Flex)的库,它允许开发者在AS3环境中创建、读取和修改Microsoft Excel文件(.xls格式)。这个源代码提供了对Excel数据处理的强大功能,使得在Flash或...
在Flash中,可以通过AS3(ActionScript 3)编写代码来列举系统字体。以下是一个简单的AS3示例: ```actionscript import flash.system.System; import flash.external.ExternalInterface; ExternalInterface.call...
AS3有两种类型的字体:嵌入字体和系统字体。嵌入字体允许开发者将特定字体打包到SWF文件中,确保用户无论在哪都能看到一致的文本显示。然而,这会增加SWF文件的大小,对网络传输和内存使用造成影响。另一方面,系统...
1. **RichTextField**:这是AS3中的一个类,专门用于处理富文本内容,包括基本的文本格式、颜色、字体等,以及更复杂的功能如图片嵌入。RichTextField类允许我们在文本中插入SWF、JPEG、PNG或GIF格式的图片,实现了...
在Flash中,自定义字体可以被嵌入到SWF文件中,确保在任何系统上都能正确显示文本。 6. **flash**:这个文件或文件夹可能包含额外的Flash相关文件,如FLA(Flash源文件)、AS(ActionScript文件)或其他素材。 ...
16. **嵌入字体**:支持将字体嵌入到应用程序中,以便在不同平台上保持一致的显示效果。 17. **位图字体**:一种基于位图的字体,通常用于游戏等高性能需求的应用。 18. **RenderTexture**:允许开发者将渲染结果...
Flash 反编译工具 Flash Decompiler Trillix 中文版Flash 反编译工具 Flash Decompiler Trillix 中文版 Flash Decompiler Trillix 5.3.1400 汉化版让您转换 Adobe Flash SWF 文件返回到 FLA 格式,可以在原生 Flash ...
- 在“AS3 Context”选项卡下的“Flex SDK Location”中设定Flex SDK的路径。 - **2.2 设置全局包路径**: - 通过“Tools -> Global Classpaths”打开面板。 - 使用“Add Classpath”按钮添加外部包的路径。 - ...
在“字体”选项中,取消“嵌入字体”的勾选,这样就可以支持中文显示。然后,将XML文件中的对应文字替换为你需要的中文内容。通常,选择Arial字体,字号12,对于菜单等元素,可以考虑使用微软雅黑,并选择“设备字体...
以下是关于这些图表类型及其在Flash中的应用的详细解释。 1. **竖柱形图**:竖柱形图是一种常见的统计图表,用于比较不同类别的数据。在Flash中,通过ActionScript可以动态创建和更新这种图表。每个类别对应一根...