[转] 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);

posted @ 2013-11-05 15:02  leo_as南京  阅读(2322)  评论(0编辑  收藏  举报