900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Flash as3嵌入中文字体的方法-Flash actionscript

Flash as3嵌入中文字体的方法-Flash actionscript

时间:2022-08-06 11:05:37

相关推荐

Flash as3嵌入中文字体的方法-Flash actionscript

今天天气好晴朗处处好风光,好天气好开始,又来和大家分享啦。下面给大家推荐Flash as3嵌入中文字体的方法-Flash actionscript,希望大家看完后也有个好心情,快快行动吧!

因为最近要做一个项目,涉及到要输入文本,Flash的输入文本默认下是只能显示设备字体。连系统内的字体都不能设置,必须要嵌入才能输入。

as2的时代,可以用加载字体库的方式来解决,Adobe官方的解释太烦琐了,其实总结起来就是一个替换字体的过程,把外部库的自定义字体替换当前的输入字体。

例如如下:

如果是as2的话,新建一个Fla文件,然后在库里新建一个字体文件,然后设置他的标识为,随便选择系统内的一种字体,然后选择里的导出,导出 sharing,导出第一帧,然后在url处填写,然后编译成

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

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

下面我们要说的是如何用程序来实现as3的中文动态嵌入加载,查了网上的一些资料,老外的做法是新建一个类,然后在类里直接embed这个font,然后最通过加载这个,然后反射出这个类,再注册一次使用,经试验,发现这样的做法英文是可以的,如果是中文,在编译的时候会报错

嵌入字体库文件类

package {

import ;

& class FontLibrary extends Sprite {

[Embed(systemFont=’Bank Gothic’, fontName=’emBank Gothic’, mimeType=’application/x-font’)]

public static var ;

}

}

调用字体库文件类

var = new Loader();

(, completeHandler);

(new URLRequest(fontlibrary.swf));

private function completeHandler():void {

var = () 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 =new Loader;

(,completeHandler);

(new URLRequest(shared.swf));

function completeHandler():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);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。