如何正确使用flash player的新功能

Adobe在每一个新版本的Flash Player里都加入了新功能。为使用这些功能,你需要正确的编译你的SWF文件。不幸的是,设置你的编译环境,为编译器传递正确的选项可能很棘手。今天这篇文章就旨在为你清除这些烦恼,这样你就可以使用最新版本Flash Player的功能了。


本篇不会涉及Flash浩瀚的集成开发环境(IDE),相反他们都使用藏在幕后的一个工具:Flex SDK。特别是用MXMLC命令行生成SWF,和COMPC命令行生成SWC。基本方法就忽略不计了!



 

mxmlc MyApp.as


如果你说你想用Stage3D那样的闪亮新功能。你先可以读读这个API文档,然后你写点代码再重新编译上面的命令。出人意料,你看到了下面显示的错误:
 

/path/to/MyApp.as(8): col: 10 Error: Access of possibly undefined property stage3Ds through a reference with static type flash.display:Stage.

                        stage.stage3Ds[0].requestContext3D("auto", "baseline");

等等!为什么编译器居然不知道Stage3DFlash Player不是已经发布一年了吗?还是没有从Adobe官网上下载最新的Flex SDK?不是的,你下载了,也装了,但是编译器还需要一点设置才能知道这个新版本的Flash Player你需要对命令行添加一个选项来告诉编译器它在编译哪个版本的Flash Player

mxmlc MyApp.as -target-player=11.4.0


现在编译的时候你又发现了另一个错误:

 

/path/to/flex_sdk/frameworks/flex-config.xml(56): Error: unable to open 'libs/player/11.4/playerglobal.swc'

      


这个错误看起来含义模糊,但是它反映了这条命令行选项怎么了。你看,所有问题发生在你想指定-target-player(目标播放器)选项上,意思是你告诉编译器链接到一个包含Flash Player API的特定SWC上。这个API随着每个新版本Flash Player的发布而改变,通常这些改变是增加了新的类,方法和参数。上面这个错误是说,编译器搜寻这个SWCplayerglobal.swc)但是没找到。所以你要下载Flash Player11.4playerglobal.swc,放这里了:

/path/to/flex_sdk/frameworks/libs/player/11.4


你将来希望会创建不存在的目录,对未来的读者来说,不管发布的是“11.4”“11.5”“12.0”还是任何Adobe发布的版本中你都可以这样创建了。来看看我的小例子:

package
{
        import flash.display.Sprite;
        public class MyApp extends Sprite
        {
                public function MyApp()
                {
                        stage.stage3Ds[0].requestContext3D("auto");
                }
        }
}


上面的代码用的是Stage3D里最基本的方法,当我把他放在Flash Player11.4里编译,得到了这个没有捕获的异常:

ReferenceError: Error #1069: Property stage3Ds not found on flash.display.Stage and there is no default value.
        at MyApp()


为什么会这样?我们没有指定正确的Flash Player版本?说对了,但是这只是部分原因,-target-player-效果唯一效果仅仅是指定链接的playerglobal.swc。事实是,每一个SWF有一个内在的版本号,这个版本号决定了在运行时你是用哪一个Flash Player API。所以我们还需设置另一项然后再次编译。

mxmlc MyApp.as -target-player=11.4.0 -swf-version=17


17看起来是个奇怪的版本号,因为Flash Player的版本只到11.4,但是这个整数和发布每个小版本Flash Player是对应的。下面是一张已发布的SWFFlash Player版本的对应表:


非常无语,原帖不是图片,我截图后发现没法上传本地图片,上传附件也不行,点击浏览按钮一万次都没反应,去原帖看吧,孩纸们~)


你的代码终于可以正常编译了。我们再来回忆一下,下面是你为了链接到正确的Flash Player版本所要做的三步:


1.下载并导入正确的版本,playerglobal.swc

2.指定正确的Player版本给MXMLCCOMPC

3.指定正确的SWF版本给MXMLCCOMPC

需要记住一点,一旦你根据上面设定了特定的Flash Player版本,是用之前版本Player的用户不能播放你的SWF,所以你要考虑好,也行JavaScript探测到后,会在网页上提示用户更新版本。当然最新版本的Flash Player的用户仍然可以使用SWF希望这篇文章在你使用Flash的新功能是帮你解除疑惑了。如果你有任何问题,可以留言给我。(最后一句是作者加的,不是我哟!当然还是欢迎大家讨论的)

你可能感兴趣的:(3D,AIR3,Stage3D)