节约大家时间,先说结论:

1、是否文字中包含了\r\n等字符,flash中,\r和\n都会换行。需要过滤掉其中1个

 
2、是否文本框大小不够,文字被挤到下一行了。设置单行、多行
 
3、TextField使用了抗锯齿,需要嵌入字体,但动态变化的文字并不在嵌入的文字中。这个具体不说了,不懂的就得回去补课了。
 
4、是否文本框使用嵌入字体,但需要显示的文字却又没有包含在字体中。
     还有一种比较特殊的情况,就是嵌入了2个字体(例如两个swc),重复导入了同样的字体,较小的那一个可能覆盖了大的那个。导致无法显示。
 
5、最后最奇葩。。。嵌入swf到html中时,是否没有设置wmode节点。尝试调整wmode,试试window、opaque、transparent。
     主要是有可能在某些webkit下出现问题(例如qq客户端自带的),出现文本变白,跟背景混在一起。
 
 
=======================================================
 
 
关于第4点,这里是非常奇怪的现象,需要做个实验来给大家说明一下。另外可以参考yboy的文章:http://riaoo.com/?p=2401
如果flash程序嵌入了多个swc,而这些swc如果嵌入一样的字体会导致冲突。
如果两个嵌入的字还不相同,貌似flash builder会倾向于只保留少的那个。但反正不能允许这种情况出现了。
 
实验验证:
1、首先做两个fla,导出swc和swf,一个叫font1,一个叫font2,分别嵌入“一二三四”和“一二三四五六”。需要注意的是,动态文本写死的那几个字,也会自动被嵌入(如果不是选“设备字体”)。
  SWF的结构:场景中放一个元件,元件导出as链接,元件的子元件是TextField
 
2、编写fb代码,如下所示,实现三种加载方式。

              [ Embed(source= "../lib/font1.swf" )]
private var Font1:Class;
[ Embed(source= "../lib/font2.swf" )]
private var Font2:Class; public function Test2()
{
//第一种嵌入方式(运行时加载swf)
var loader1:Loader = new Loader();
loader1.load( new URLRequest("font1.swf"), new LoaderContext(false , ApplicationDomain.currentDomain));
addChild(loader1); var loader2:Loader = new Loader();
loader2.load( new URLRequest("font2.swf"), new LoaderContext(false , ApplicationDomain.currentDomain));
addChild(loader2);
loader2.x = 300; setTimeout( function():void{
TextField(MovieClip(MovieClip(loader1.content). getChildAt(0)).getChildAt (0)).text = "一二三四五六" ;
TextField(MovieClip(MovieClip(loader2.content). getChildAt(0)).getChildAt (0)).text = "一二三四五六" ;
}, 1000); //第二种嵌入方式(加入swc)
var text1:MovieClip = new TestFont1();
addChild(text1);
text1.y = 50;
TextField(text1. getChildAt(0)).text = "一二三四五六";
var text2:MovieClip = new TestFont2();
addChild(text2);
text2.x = 300;
text2.y = 50;
TextField(text2. getChildAt(0)).text = "一二三四五六"; //第三种嵌入方式(编译时嵌入swf)
var text3:MovieClip = new Font1();
addChild(text3);
text3.y = 100;
var text4:MovieClip = new Font2();
addChild(text4);
text4.x = 300;
text4.y = 100;
setTimeout( function():void{
//text3是封装的一个壳,子元件是loader,loader里边才是这个swf
Object(text3).getChildAt(0).content. getChildAt(0).getChildAt(0).text = "一二三四五六" ;
Object(text4).getChildAt(0).content. getChildAt(0).getChildAt(0).text = "一二三四五六" ;
}, 1000);
 
上述代码会产生这样的效果:(第一行是load swf的方式,第二行是直接引入swc再编译,第三行是嵌入swf)

 
我们看第一行和第三行,font1因为只嵌入了“一二三四”,所以无法显示“五六”,但font2没有受到影响。但第二行,font1和font2都只能显示“一二三四”,这里边定有乾坤。
 
反编译结果swf可以发现,引入swc的方式,虽然fb还是生成了两个字体,但是实际运行的时候,只索引了第一个字体,第二个就被忽略了,所以“五六”没有显示。
 
 
根据yboy的记录,我这里尝试把font1的TextField设置为“设备字体”,情况更极端了。
(第二行)font1直接嵌入了一个没有字的字体,导致font2完全不显示的。正如yboy说的,“嵌入了一个没有字的字体和没有嵌入字体是大大不同的”。没有嵌入字体就不会影响font2了,正是font1嵌入了字体,但却不带任何字,导致问题发生。

 
避免这个问题的方式:
1、改为加载多个swf的方式,不要引入多个swc;
2、如果必须引入多个swc,约定只在一个swc中嵌入字体;
3、最根本!避免这种动态修改文字的方式,改为换一帧,或者换个图片。
 

Flash:TextField字体不显示/文字不显示/文字丢失的更多相关文章

  1. 初学Direct X(9) ——文字的显示

    初学Direct X(9) --文字的显示 本次学习如何使用ID3DXFont创建字体,使得我们可以在任何安装了Windows系统中TrueType字体来打印文字,不过最好使用标准字体,这样文字在每一 ...

  2. jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏

    1.效果及功能说明 hover事件制作产品图片鼠标滑过图片半透明,标题文字从左到右滑动动画移动显示隐藏 2.实现原理 首先把效果都隐藏,然后定义一个伪类来触发所有的效果,接下来当触发伪类后会有一个遍历 ...

  3. ActionBar只显示图标不显示文字

    问题:ActionBar菜单项android:showAsAction设置为android:showAsAction="always|withText"或者android:show ...

  4. CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容

    CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容,DiV透明其实挺简单,主要是为background定义opacity属性,一般这个是最大值是1,数值越接近1,则越不透明 ...

  5. delphi之完美Splash方案(在TfrmMain.FormCreate里不断调用TfrmSplash显示加载进度文字,并且及时Update显示)

    前言:网上有很多介绍delphi创建闪屏的代码,大多只是在程序开启前显示一个闪屏,但是却没有说如何在闪屏上显示程序加载的进度,于是笔者有意思介绍一下这种闪屏方式. 1.创建一个窗体(TfrmSplas ...

  6. js实现文字逐个显示

    先把代码摆上了吧: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtm ...

  7. 文字超出DIV后,隐藏文字并显示...

    <html> <head> <style type="text/css"> #cs{width:100px;height:50px;line-h ...

  8. 让TextView里面的文字逐个显示的动画效果实现(1)

    最近使用TextView时想要实现里面的文字逐个显示的动画效果,就如同打字一样. 主要实现思想:新建一个TextView的派生类,先将要逐个显示的字符串保存变量 mOriginalStr 中,然后启动 ...

  9. Ueditor增加文字竖排显示和从右向左输入(支持蒙古文和维吾尔文)

    平时我们在ueditor中都是输入的中文,排版都是从左向右输入.但是当输入一些少数民民族言时,ueditor却不能正常显示. 例如蒙古文字,传统蒙文是竖排书写.如下图:传统蒙古文排文方式,<蒙古 ...

随机推荐

  1. 实用ExtJS教程100例-010:ExtJS Form异步加载和提交数据

    ExtJS Form 为我们提供了两个方法:load 和 submit,分别用来加载和提交数据,这两个方法都是异步的. 系列ExtJS教程持续更新中,点击查看>>最新ExtJS教程目录 F ...

  2. Greenplum入门——基础知识、安装、常用函数

    Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709    版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...

  3. [转]PHP: 深入pack/unpack

    From : http://my.oschina.net/goal/blog/195749 http://www.w3school.com.cn/php/func_misc_pack.asp PHP作 ...

  4. AlphaGo 开源项目研究(1)

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50907446 未经博主同意不得转载. 博主地址是:http://blog.csd ...

  5. Xilinx FFT IP v9.0 使用

    该ip用于实现N=2**m(m=3~16)点FFT的变换, 实现的数学类型包含: A)      定点全精度 B)      定点缩减位宽 C)      块浮点 每一级蝶型运算后舍入或者取整.对于N ...

  6. 【转】vs2012-vs2010使用stlport库的配置

    http://www.cnblogs.com/sbaicl/archive/2012/08/30/2663114.html STLport下载地址:http://sourceforge.net/pro ...

  7. UrlRewriter && IIS7

    为了在动态网站获得更好的url体验,往往采用url重写技术. 比如:http://blog.xujif.com/?p=268 可以重写为 http://blog.xujif.com/archives/ ...

  8. Gradle Groovy 基础语法 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. 8天学通MongoDB——第一天 基础入门(转)

    关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一: 下载 上Mon ...

  10. 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言

    非科班出身, 现在才接触汇编, 惭愧呀, 好好学! 主选课本是清华大学王爽老师的<汇编语言>. 推荐 王爽老师的汇编网 汇编语言之前是机器语言. 机器语言是机器指令的集合, 机器指令是一系 ...