转载

《Flexpaper二次开发入门教程》(十八) 解决中文SWF不能读取问题(5.6节) ... ... ... ...

5.6 解决中文SWF不能读取问题

这里的中文SWF不能读取问题是指:当SWF文件名为中文时,FlexpaperViewer不能读取到指定的SWF文件,会显示一直处于加载中。这个问题是mark最需要解决的,因为ajava.org网站的PDF基本都是中文名,如果都要改成英文名,那处理起来会很麻烦。

我们先作下面的测试:

测试一、在windows xp系统下,test.htmlflexpaper_flash.js无任何改动,将上面的ajavaflexpaper.swf改名为FlexpaperViewer.swf(或使用原有的),test.htmlSwfFile : escape('中文ajava.swf')

结果:FlexpaperViewer无法加载中文SWF

 

测试二、在windows xp系统下,test.htmlflexpaper_flash.js的文件编码都是utf-8(文本编辑器中另存时选择编码为utf-8),将上面的ajavaflexpaper.swf改名为FlexpaperViewer.swf(或使用原有的),test.htmlSwfFile : escape('中文ajava.swf')

结果:FlexpaperViewer无法加载中文SWF

 

测试三、在windows xp系统下,test.htmlflexpaper_flash.js的文件编码都是utf-8(文本编辑器中另存时选择编码为utf-8),将上面的ajavaflexpaper.swf改名为FlexpaperViewer.swf(或使用原有的),test.htmlSwfFile : decodeURI('中文ajava.swf'), flexpaper_flash.js中第24行增加decodeURISwfFile : decodeURI(config.SwfFile),

结果:FlexpaperViewer可以加载中文SWF

 

测试四、在windows 2003系统下,按顺序测试上面的1-3

结果:三种情况FlexpaperViewer都不可以加载中文SWF

 

测试五、在linux系统下,按顺序测试上面的1-3

结果:三种情况FlexpaperViewer都不可以加载中文SWF

 

从上面的测试结果来看,中文SWFwindows 2003系统、linux系统中使用中文SWF无论是使用原有的还是ajavaflexpaper.swf改名的FlexpaperViewer.swf,都不能解决加载中文SWF问题。

 

我们采用以下的方法来寻求解决之道:查找FlexpaperViewer.mxmlFlexpaperViewer_base.mxml文件,找出SwfFile相关的内容,通过Alert.show()方法显示出来,检查是哪里的问题。

主要检查要注意的代码有:

Ajavaflexpaper.mxml - initApp()

FlexpaperViewer_base.mxml - loadSwf(s:String)

FlexpaperViewer_base.mxml - toggleFullScreen()

FlexpaperViewer_base.mxml - getUrlParamaters()

Viewer.as - set SwfFile(s:String)

 

通过检查上述方法,会发现无法加载中文SWF问题的原因是:

Web页面中SwfFile : escape('中文ajava.swf ')参数与Viewer.as - set SwfFile(s:String)方法中的参数处理导致问题。

 

Mark作了以下修改:

1. test.htmlflexpaper_flash.js的文件编码都是utf-8

2. test.htmlSwfFile : escape('中文ajava.swf ')改为SwfFile : decodeURI('中文ajava.swf ')

3.     Viewer.as - set SwfFile(s:String)方法中,修改如下代码:

-------------------------------------------------------------------

if(EncodeURI)

    s = unescape(s);

改为

if(EncodeURI)

    s = decodeURI(s);

--------------------------------------------------------------------

if(!pagesSplit){

   

    _swfFile = s;

    if(EncodeURI)

        _swfFile = encodeURI(s);

    else

        _swfFile = s;

}

else

    _swfFile = s;

改为

_swfFile = s;

 

修改完成后,重新编译,在3种测试环境中测试,会发现中文SWF可以加载了,呵呵。

假如你的中文SWF文件是放在中文文件夹中,那可以读取到吗?答案是YES,没问题,你可以自己试试^_^

《Flexpaper二次开发入门教程》(十八) 解决中文SWF不能读取问题(5.6节) ... ... ... ...

 

关于SWF中文名中特殊字符的使用

1)系统禁止使用: /  /  *  <  >  |

2)英文符号  %  &  '  + 不可用,

3)中文符号  %  &  '  + 不可用,可用

4)要注意英文大小写的不同

 

转载请注明:转自http://ajava.org,请保留文章的完整。

正文到此结束
Loading...