将为Flash 10编译的SWF加载到Flash 9 SWF中

时间:2009-05-15 18:22:04

标签: flex flash actionscript-3 flash-10

这可能吗?我想有一个主SWF,可以安装flash 9或flash 10的用户查看。在此swf内部,仅为安装了Flash 10的用户加载单独的模块。该模块将使用一些高级闪存10功能。

3 个答案:

答案 0 :(得分:1)

当然,这应该像你描述的那样正常。在Flash 9中创建基本SWF,进行版本检查,并可选择加载另一个发布为10的SWF。无论加载到哪个版本的SWF,Flash都将呈现v10 SWF中的高级功能。

请记住,该版本以字符串形式返回,因此请务必在其上执行parseInt

答案 1 :(得分:1)

除非您尝试在Flash 10 SWF中使用Flash 10特定库,否则这应该可以正常工作,这可能就是您正在做的事情。我刚尝试过这个,但Adobe的Flash / Flex库设计和质量再次令人失望。

例如,我试图执行以下操作

如果用户的Flash Player为10或更高,我有一个Flash 9基本SWF,它将加载Flash 10模块。此Flash 10模块最终使用Flash 10特定库,例如:   1)flash.net.NetStreamPlayOptions   2)flash.net.NetStreamPlayTransitions   3)NetStream.play2 不幸的是,当我这样做时,Flash运行时抱怨没有NetStreamPlayOptions,NetStreamPlayTransitions和NetStream.play2这样的东西。我试图通过复制NetStreamPlayOptions和NetStreamPlayTransitions来解决这个问题,这让我更进一步,但不幸的是我无法调用NetStream.play2,即使我将NetStream实例转换为Object。

我相信它的工作原理是这样的,因为Flash 9的基本SWf使用了适用于Flash 9的playerglobal.swc。当它加载Flash 10 SWF时,它仍然使用Flash 9 playerglobal.swc结束。因为Flash 9初始化了环境,导致Flash 10 SWF出现问题。我还没有找到解决方法。

当Flash从AS1切换时 - > AS2 - > AS3,它为什么不向后兼容是有道理的,但现在AS3不能总是加载AS3,我认为这非常令人失望。

答案 2 :(得分:0)

很长一段时间以来我没有开发Flash应用程序但是......这些是我的2美分:

您可能必须将主Flash编译为10,这可能是一个问题,因为升级警告。

这是一种可行的解决方法: http://codeofdoom.com/wordpress/2009/02/09/compiling-to-flash-10-requiring-flash-9/

完成后,我认为很容易就像你说的那样检测flash版本并加载不同的swf模块。