【发布时间】:2009-05-15 18:22:04
【问题描述】:
这可能吗?我想要一个主 swf 可供安装了 flash 9 或 flash 10 的用户查看。在这个 swf 内部,一个单独的模块将只为安装了 flash 10 的用户加载。此模块将使用一些高级 flash 10 功能。
【问题讨论】:
标签: apache-flex flash actionscript-3 flash-10
这可能吗?我想要一个主 swf 可供安装了 flash 9 或 flash 10 的用户查看。在这个 swf 内部,一个单独的模块将只为安装了 flash 10 的用户加载。此模块将使用一些高级 flash 10 功能。
【问题讨论】:
标签: apache-flex flash actionscript-3 flash-10
当然,正如您所描述的那样,这应该可以正常工作。在 Flash 9 中创建您的基础 SWF,进行版本检查,并可选择加载另一个发布为 10 的 SWF。Flash 将呈现 v10 SWF 中的高级功能,无论加载到的 SWF 版本是什么。
只要记住版本是作为字符串返回的,所以一定要在上面写一个parseInt。
【讨论】:
这应该可以正常工作,除非您尝试在 Flash 10 SWF 中使用 Flash 10 特定库,这可能就是您正在做的事情。我刚刚尝试过,但 Adobe 的 Flash/Flex 库设计和质量再次令人失望。
例如,我正在尝试执行以下操作
我有一个 Flash 9 基础 SWF,如果用户的 Flash Player 为 10 或更高版本,它将加载一个 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 实例转换为对象。
我相信它是这样工作的,因为基础 SWf(即 Flash 9)使用了适用于 Flash 9 的 playerglobal.swc。当它加载 Flash 10 SWF 时,它最终仍然使用 Flash 9 playerglobal.swc因为环境是为 Flash 9 初始化的,这会导致 Flash 10 SWF 出现问题。我还没有找到解决这个问题的方法。
当 Flash 从 AS1 -> AS2 -> AS3 切换时,为什么它不向后兼容是有道理的,但现在 AS3 不能总是加载 AS3,在我看来这是非常令人失望的。
【讨论】:
我已经很久没有开发 Flash 应用了,但是……这些是我的 2 美分:
您可能必须将主 Flash 编译为 10,由于升级警告,这可能是个问题。
这是一种可能的解决方法: http://codeofdoom.com/wordpress/2009/02/09/compiling-to-flash-10-requiring-flash-9/
做完这些,我认为就像你说的那样检测flash版本和加载不同的swf模块很容易。
【讨论】: