`
huanyq2008
  • 浏览: 171733 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Flash as3嵌入中文字体的方法

阅读更多

因为最近要做一个项目,涉及到要输入文本,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; // to demonstrate the embed worked
    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字体嵌入终极教程 附带unicodeRange获取器支持新老文本引擎(转)

    这篇“AS3字体嵌入终极教程”着重讲解了如何在Flash Player或Adobe AIR环境中处理字体嵌入,并提供了一个unicodeRange获取器,以支持新老文本引擎。 一、字体嵌入基础 在AS3中,有两种类型的字体嵌入:基本嵌入和...

    AS3动态加载字体

    在ActionScript 3 (AS3)中,动态加载字体是一种技术,允许开发者在应用程序运行时加载和使用新的字体。这可以极大地提高应用的灵活性,尤其是对于那些需要展示各种独特字体或者用户可定制字体的应用。本知识点将深入...

    动态嵌入字体

    动态嵌入字体是一种在Flash(SWF)内容中使用特殊技术来实现字体显示的方法。这种方法主要是为了解决在Web上展示个性化或特定字体时遇到的问题,因为不同的用户计算机上可能并未安装所需字体,从而导致内容显示不...

    flash as3整站源码php

    1. **ActionScript 3 (AS3)**:AS3是Flash Professional中的编程语言,用于创建互动性的富媒体内容,如网页动画、游戏和应用程序。AS3相比之前的版本有更强的类型检查和性能提升,且语法更加严谨,支持面向对象编程...

    FLASH AS3 loading 源文件 源代码

    在Flash AS3编程中,加载(Loading)是关键功能之一,允许开发者动态地在应用程序运行时引入外部资源,如图像、SWF文件、XML或文本数据。本资源包含了一个名为"loading_as3"的示例项目,其中包括了loading_as3.fla...

    flash actionscript3游戏开发之 5种将fla中的资源嵌入到Flex或者纯AS3项目中的方法.zip

    在Flash ActionScript3游戏开发中,将FLA中的资源嵌入到Flex或纯AS3项目是常见的需求。这些资源可能包括位图、字体、声音、动画等,它们是游戏视觉效果和交互体验的重要组成部分。本篇文章将详细讲解五种不同的嵌入...

    三步搞定flash AS2.0模版汉化问题

    首先,涉及到Flash和中文显示的关系,我们需要明白的是,Flash在显示文字时其实跟系统语言和嵌入字体有很大关系。由于Flash自身支持动态中文,因此只要正确嵌入中文字体,就可以保证中文在不同平台上的显示一致性。...

    【个人收集】as3实用小例

    `Flash嵌入字体的进阶方法.txt`探讨了如何在AS3中嵌入和使用非标准字体,确保跨平台一致性。这可能涉及Font类、系统字体和嵌入字体的字形选择。 8. **动态文本加链接**: 在AS3中,可以通过TextFormat和...

    完美flash 3d效果源文件

    这里的“3D效果”可能是指通过ActionScript 3(AS3)实现的,这是一种编程语言,用于为Flash内容添加动态功能和交互性。 描述中提到“以3D形式展示图片,流畅动态”,这表明这个源文件是一个3D图像滑动或旋转展示的...

    as3xls源代码

    AS3XLS是一款用于Adobe Flash Platform(包括ActionScript 3.0和Flex)的库,它允许开发者在AS3环境中创建、读取和修改Microsoft Excel文件(.xls格式)。这个源代码提供了对Excel数据处理的强大功能,使得在Flash或...

    js 取字体列表(非IE)

    在Flash中,可以通过AS3(ActionScript 3)编写代码来列举系统字体。以下是一个简单的AS3示例: ```actionscript import flash.system.System; import flash.external.ExternalInterface; ExternalInterface.call...

    runtime-font-loader-as3:运行时字体加载器 as3

    AS3有两种类型的字体:嵌入字体和系统字体。嵌入字体允许开发者将特定字体打包到SWF文件中,确保用户无论在哪都能看到一致的文本显示。然而,这会增加SWF文件的大小,对网络传输和内存使用造成影响。另一方面,系统...

    as3实现的图文混排组件

    1. **RichTextField**:这是AS3中的一个类,专门用于处理富文本内容,包括基本的文本格式、颜色、字体等,以及更复杂的功能如图片嵌入。RichTextField类允许我们在文本中插入SWF、JPEG、PNG或GIF格式的图片,实现了...

    好的flash demo

    在Flash中,自定义字体可以被嵌入到SWF文件中,确保在任何系统上都能正确显示文本。 6. **flash**:这个文件或文件夹可能包含额外的Flash相关文件,如FLA(Flash源文件)、AS(ActionScript文件)或其他素材。 ...

    AS3 Starling 中文基础教程

    16. **嵌入字体**:支持将字体嵌入到应用程序中,以便在不同平台上保持一致的显示效果。 17. **位图字体**:一种基于位图的字体,通常用于游戏等高性能需求的应用。 18. **RenderTexture**:允许开发者将渲染结果...

    Flash 反编译工具 Flash Decompiler Trillix 5.3.1400 中文汉化版.zip

    Flash 反编译工具 Flash Decompiler Trillix 中文版Flash 反编译工具 Flash Decompiler Trillix 中文版 Flash Decompiler Trillix 5.3.1400 汉化版让您转换 Adobe Flash SWF 文件返回到 FLA 格式,可以在原生 Flash ...

    FlashDevelop学习教程

    - 在“AS3 Context”选项卡下的“Flex SDK Location”中设定Flex SDK的路径。 - **2.2 设置全局包路径**: - 通过“Tools -> Global Classpaths”打开面板。 - 使用“Add Classpath”按钮添加外部包的路径。 - ...

    关于flash网站模板flash+xml网站模板的汉化方法.pdf

    在“字体”选项中,取消“嵌入字体”的勾选,这样就可以支持中文显示。然后,将XML文件中的对应文字替换为你需要的中文内容。通常,选择Arial字体,字号12,对于菜单等元素,可以考虑使用微软雅黑,并选择“设备字体...

    有用的flash竖柱形图、横柱形图、条(线)形图、饼状图演示程序

    以下是关于这些图表类型及其在Flash中的应用的详细解释。 1. **竖柱形图**:竖柱形图是一种常见的统计图表,用于比较不同类别的数据。在Flash中,通过ActionScript可以动态创建和更新这种图表。每个类别对应一根...

Global site tag (gtag.js) - Google Analytics