Adobe在每一个新版本的Flash Player里都加入了新功能。为使用这些功能,你需要正确的编译你的SWF文件。不幸的是,设置你的编译环境,为编译器传递正确的选项可能很棘手。今天这篇文章就旨在为你清除这些烦恼,这样你就可以使用最新版本Flash Player的功能了。
本篇不会涉及Flash浩瀚的集成开发环境(IDE),相反他们都使用藏在幕后的一个工具:Flex SDK。特别是用MXMLC命令行生成SWF,和COMPC命令行生成SWC。基本方法就忽略不计了!
如果你说你想用Stage3D那样的闪亮新功能。你先可以读读这个API文档,然后你写点代码再重新编译上面的命令。出人意料,你看到了下面显示的错误:
等等!为什么编译器居然不知道Stage3D?Flash Player不是已经发布一年了吗?还是没有从Adobe官网上下载最新的Flex SDK?不是的,你下载了,也装了,但是编译器还需要一点设置才能知道这个新版本的Flash Player。你需要对命令行添加一个选项来告诉编译器它在编译哪个版本的Flash Player。
现在编译的时候你又发现了另一个错误:
【我的提示Error: unable to open 'libs/player/10.1/playerglobal.swc' 哎,我开始也是看了这个文章半天老提示错误,什么10.0,10.3,11.7的我都下了那个包里面,结果都还是提示错误,最后猛然发现,我的player下的文件夹名为10.0,当然对自己很无语,立马建了一个10.1的文件夹,放了个10.1的SWC进去,CTRL+ENTER ,OK,哈哈】
这个错误看起来含义模糊,但是它反映了这条命令行选项怎么了。你看,所有问题发生在你想指定-target-player(目标播放器)选项上,意思是你告诉编译器链接到一个包含Flash Player API的特定SWC上。这个API随着每个新版本Flash Player的发布而改变,通常这些改变是增加了新的类,方法和参数。上面这个错误是说,编译器搜寻这个SWC(playerglobal.swc)但是没找到。所以你要下载Flash Player11.4的playerglobal.swc,放这里了:
你将来希望会创建不存在的目录,对未来的读者来说,不管发布的是“11.4”“11.5”“12.0”还是任何Adobe发布的版本中你都可以这样创建了。来看看我的小例子:
上面的代码用的是Stage3D里最基本的方法,当我把他放在Flash Player11.4里编译,得到了这个没有捕获的异常:
为什么会这样?我们没有指定正确的Flash Player版本?说对了,但是这只是部分原因,-target-player-效果唯一效果仅仅是指定链接的playerglobal.swc。事实是,每一个SWF有一个内在的版本号,这个版本号决定了在运行时你是用哪一个Flash Player API。所以我们还需设置另一项然后再次编译。
17看起来是个奇怪的版本号,因为Flash Player的版本只到11.4,但是这个整数和发布每个小版本Flash Player是对应的。下面是一张已发布的SWF和Flash Player版本的对应表:
(非常无语,原帖不是图片,我截图后发现没法上传本地图片,上传附件也不行,点击浏览按钮一万次都没反应,去原帖看吧,孩纸们~)
你的代码终于可以正常编译了。
我们再来回忆一下,下面是你为了链接到正确的Flash Player版本所要做的三步:
1.下载并导入正确的版本,playerglobal.swc
2.指定正确的Player版本给MXMLC或COMPC
3.指定正确的SWF版本给MXMLC或COMPC
需要记住一点,一旦你根据上面设定了特定的Flash Player版本,是用之前版本Player的用户不能播放你的SWF,所以你要考虑好,也行JavaScript探测到后,会在网页上提示用户更新版本。当然最新版本的Flash Player的用户仍然可以使用SWF。
转载地址:http://hi.baidu.com/joomecow/item/389ca300a77e59046d90485f