[转] Adobe Flash Professional CS解决提示:您的内容将不流化。运行时共享库(RSL)预加载要求下载您的所有内容后才可播放第一帧。
某日,发布并测试flash的过程中,总是出现“运行时共享库预加载警告”弹出框(如图1),并会生成.swz文件,开始以为对flash后续开发没有影响,结果不然,会导致.swf文件通过服务器加载后,无法在前端界面上显示,故查找并解决此问题。
图1:运行时共享库预加载警告
正如大家看到的,警告弹出框中已经有防止这种情况的解决方法,即:您可以在“高级 ActionScript 3.0 设置”对话框中更改运行时共享库库设置,该对话框可从“发布设置”对话框中获得。
相信没有遇到过此类问题的朋友会不知所措,下面操作我将进行详细说明:
有2种方式找到“高级 ActionScript 3.0 设置”对话框,并更改“运行时共享库设置”。
方式一:
选择所在场景 ——》 并点击舞台 ——》 打开“属性”面板(如图2)——》 点击“ActionScript 设置”编辑按钮 ——》 打开“高级 ActionScript 3.0 设置”对话框(如图3)——》 查看“术语”是否为“ActionScript 3.0 建议”,如果不是,改为此项 ——》 查看“运行时共享库设置”,如果默认连接为“运行时共享库 (RSL)”(如图3),将其改为“合并到代码” ——》 点击确定按钮 ——》 发布测试
图2:场景“属性”面板
图3:“高级 ActionScript 3.0 设置”对话框
方式二:
文件 ——》 ActionScript 3.0 设置 ——》 打开“高级 ActionScript 3.0 设置”对话框(如图3)——》 其它同上
方式介绍完毕后,又注意到图1中提到的TLF文本,于是查阅相关资料(未验证代码),简单了解其概念和功能以备日后学习使用,如下(下面很多引用自“端研社区”):
TLF(Text Layout Framework)文本是flash CS5的新功能,是文本布局框架。
在TLF出现之前,Flash中的文本排版支持是非常简陋的,相信很多朋友都深有同感,显然Adobe试图弥补这个缺陷,在Flash CS5中,我们可以使用TLF来增强文本布局,并实现一些之前很难实现的工作(比如对阿拉伯文的支持等等)。
在使用TLF之前,需要了解下面几点:
1.如果用FB编译项目,且使用到了TLF,SDK版本必须为4.0或以上
2.如果在Flash CS5中使用TLF,编译为SWF,主文件大约增大50K,同时产生153K的SWZ共享库
3.如果在Flash CS5中使用TLF,编译为SWC,则整个TLF将被编译到SWC文件中,SWC文件增大约380K
4.在FB建立的ActionScript项目中使用第3步编译的SWC文件,重新编译后主文件亦增大大约380K
5.在FB建立的Flex项目中使用第3步编译的SWC文件,默认会将TLF作为SharedLibraray单独存储为SWZ文件,这样主文件会小一些,测试中,主SWF大约186K,SWZ则为153K
6.Flash CS5的字体嵌入比CS4有所增强,你可以不再为某个文本框单独嵌入字体,而是在SWF中整体嵌入字体,并且指定Unicode Range(以前是不能指定的),这对于优化字体库体积非常有帮助
可见凡事有利必有弊,使用TLF无可避免的会增大一些体积,不过如果我们巧妙使用Runtime Shared Library,可以尽可能减小这方面的缺点。
在实际开发中,我们应该尽可能的将TLF文本内容和所需的字体嵌入分开,这样方便我们在运行时切换字体,而无需重新编译项目,示例步骤如下:
1.首先使用Flash CS5创建一个FLA文件,点击“文本”->“字体嵌入”,选择需要嵌入的字体和Unicode Range字符集,编译为SWF待用。
2.使用FB新建一个Action Script项目,加载刚才创建的字体库SWF,代码如下:
fontLibLoader.load(new URLRequest("font_lib.swf"),new LoaderContext(false,ApplicationDomain.currentDomain));
fontLibLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,initUI);
3.最后在项目中直接创建TLF文本框或使用Flash中创建的SWC定义好的TLF文本框,运行时设定字体即可,代码如下:
var test:Test = new Test();
var fmt:TextFormat = new TextFormat();
fmt.font = "Blackoak Std";
fmt.font = "Blackoak Std";
test.txt.text = "ASDFGHsdfghj123456789";
addChild(test);