ActionScript 3.0 使用指定字体来显示文本
actionscript吧
全部回复
仅看楼主
level 8
自在满愿 楼主
.
首先创建一个文件夹作为项目文件夹,然后打开 an 创建一个 fong.fla 保存到项目文件夹中。
如下:
.
.
用文本工具在舞台上创建一个文本框
.
.
点击创建的文本框,转到属性面板,选择你要使用的字体。
这里用的是 Aa厚底黑 字体(你电脑上要安装Aa厚底黑这个字体)
.
.
然后点击嵌入(嵌入就是把这个字体保存到库中)
这样即使别人的电脑上没有安装这个字体也可以显示效果
.
.
嵌入字体设置:
注意字符范围(决定可以显示哪些字符)
.
这里我打钩了大写 小写 数字 标点符号 简体中文
按你需要打钩既可(打钩的字符才可以显示出来必须设置需要的字符)
.
设置完成点 确定
.
.
设置完成点 确定
.
然后,舞台上创建的文本框可以删除了
因为创建文本框就是为了拿字体
拿到了创建的文本框就可以删除了
.
然后转到 库 给这字体设置一个 ff 的链接
.
.
注意链接为 ff
.
保存 font.fla 然后发布成 font.swf
.
.
到此,得到了一个包含自定义字体的 swf
.
创建一个 main.fla 作为主文件 保存到项目文件夹里面
.
.
要使用 font.swf 里面的字体 需要加载 font.swf
.
main.fla f9 打开动作面板 加载 font.swf
.
.
创建一个 loader 来加载 swf(font.swf)
还封了一个 getLibrary 的函数来获取加载的 swf 库中资源(没用到这方法)
.
下一步看图操作
.
.
看图
.
.
忘记加 数字了 加一下
.
发布看效果
.
.
你以为这就完了?并没有!
.
上面的方法是用 an 嵌入字体到库中
实际上还可以用代码嵌入外部字体
.
继续往下看
.
准备一个字体(我已经下载了)
.
.
把字体解压出来
.
.
回到 font.fla 转到库 把库中的字体删除
.
.
把库中的字体删除
.
.
f9 动作面板跑下面的代码(用代码嵌入外部字体)
.
.
发布 font.swf 然后转到 main.fla
.
转到 main.fla 动作面板代码如下
.
.
发布看效果
.
.
到这里就完事了!
.
1 可以用 an 嵌入字体到库中
你电脑上要安装字体才可以在 an 文本工具中显示
an 嵌入字体可以方便打钩需要的字符
.
2 通过代码嵌入外部字体
你得明白字符范围
.
以上是嵌入字体到 swf 中 然后 主程序加载这 swf
就可以获取这字体了 关注 双击 666
.
2025年04月16日 12点04分 1
level 8
自在满愿 楼主
.
刚刚发布太快了,我还有补充:
.
font.fla 代码如下
.
// 嵌入字体,并指定包含大写、小写、数字、标点符号以及简体中文常用汉字的Unicode范围
.
[Embed(source = "DouyinSansBold.otf",
fontName = "ff", embedAsCFF = "false",
unicodeRange = "U+0020-007E, U+00A0-00FF,U
+3
000-303F, U+4E00-9FFF")]
.
var fontClass: Class
.
//U+0020-007E, // 基本拉丁字母、数字和一些标点符号(包括空格到波浪号)
.
//U+00A0-00FF, // 拉丁-1补充字符(包括一些额外的标点符号和特殊字符)
.
//U+3000-303F, // CJK标点符号(包括全角空格、逗号、句号等)
.
//U+4E00-9FFF // CJK统一汉字(常用汉字范围)
.
main.fla 代码如下
.
var loader: Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeFn);
loader.load(new URLRequest("font.swf"));
.
var fontClass: Class
var font: Font
.
function completeFn(e: Event): void
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeFn);
//fontClass = loader.content.loaderInfo.applicationDomain.getDefinition("ff") as Class;
fontClass = MovieClip(loader.content).fontClass;
Font.registerFont(fontClass);
font = new fontClass();
var txtF: TextFormat = new TextFormat();
txtF.font = font.fontName;
txtF.color = 0xFF0000;
txtF.size = 50;
var txt: TextField = new TextField();
txt.width = 500;
txt.embedFonts = true;
txt.defaultTextFormat = txtF;
txt.text = "AB ab 中文旨 123 <>!?";
txt.x = txt.y = 200;
stage.addChild(txt);
}
.
function getLibrary(name: String): Object
{
var id: Class = loader.content.loaderInfo.applicationDomain.getDefinition(name) as Class;
return new id;
}
.
附上 API
.
TextFormat 类描述字符格式设置信息。
https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/text/TextFormat.html
.
TextField 类用于创建显示对象以显示和输入文本。
https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/text/TextField.html
.
Loader 类可用于加载 SWF 文件或图像(JPG、PNG 或 GIF)文件。https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Loader.html
.
2025年04月16日 12点04分 2
1