有没有人知道如何使用swf(版本7)并使用SwfLoader或类似的东西从Flex应用程序访问swf中的根变量?我尝试过很多事情都没有成功。我不希望在所有失败的尝试中弄乱这篇文章,但如果我发现他们需要作为示例,我会稍后发布。
只是一些背景:我在.NET中生成swf文件,我使用的库只能生成版本7的swfs。Flex应用程序正在使用Flex 3构建。我需要访问swf中的变量。我不在乎它是怎么做的,只要我能做到。如果我冒泡一个事件或使用LocalConnection或直接访问变量无关紧要,到目前为止,我没有运气做任何事情。 (swf确实加载了......并显示在我的Flex应用程序中)。
哦,swf没有嵌入。
答案 0 :(得分:1)
从as1.0开始,外部接口已经可用,因此这可能是您的问题的解决方案。使用ExternalInterface类的actionscript可以与javascript通信,反之亦然。因此,您可以从swf将变量传递给javascript函数,并将该javascript函数传递给FLEX应用程序中的函数。我不想写所有的代码,除非这听起来像是你正在寻找的答案,在这种情况下让我知道,我会为你写出代码,或者只是......
检查出来:ExternalInterface
答案 1 :(得分:0)
当您加载以FP8或更早版本为目标的SWF时,它将作为AVM1Movie的实例加载。来自文档:
“AVM1Movie对象可以使用从DisplayObject类继承的方法和属性(例如x,y,width等)。但是,AVM1Movie对象和AVM2之间没有互操作性(例如调用方法或使用参数)允许使用对象。“
这是因为FlashPlayer 9+实际上有两个不同的虚拟机,而且它们无法直接相互通信。
LocalConnection肯定会在这种情况下工作:我已经将v7 SWF与Flex 2应用程序一起使用,并且从v7开始进行通信(通过方法调用) - > Flex2和Flex2 - > V7。我会调查你是如何设置它的,因为它肯定会起作用。