在Flex3中获取Fscommand

时间:2009-10-08 10:54:00

标签: flex actionscript-3 flex3 air

我有一个swf文件,我使用fscommand在swf中点击提交按钮时得到最终输出,     我在flex3中的SWFloader中加载swf。我需要将fscommand值作为Alert获取,如何首先获取该值并显示为alert。

提前致谢

2 个答案:

答案 0 :(得分:1)

fscommand不能用于加载和包含的SWF之间的通信。

来自livedocs

  

fscommand:允许SWF文件与Flash Player或托管Flash Player的程序(如Web浏览器)进行通信。您还可以使用fscommand()函数将消息传递给Director或Visual Basic,Visual C ++以及可以承载ActiveX控件的其他程序。

您可以在加载的swf中调用方法或直接访问其属性或使用事件或使用本地连接在父SWF和加载的SWF之间传递数据。

答案 1 :(得分:0)

技术这是可行的,但是一个坏主意。您需要注册一个可以调用子swf的回调(通常从子swf完成)。但是,您将面临很大的麻烦,并且您将不得不在浏览器上依赖其他选项。它也会比只有AS的解决方案慢。

你的状况要好得多(按此顺序):

        
  1.         使用共享的Singleton。这允许两者完全分离         瑞士法郎不需要两者之间的任何重大协调。唯一的         如果你想让孩子swf拥有​​它,可能会导致真正的潜在问题         拥有ApplicationDomain,但即使如此,也有解决方法     
  2.     
  3.         使用事件。如果您让孩子swf派遣冒泡,这可以工作,         不可取消的活动,并且已记录event.target         父母swf。您可能需要进行调整以避免         但是SecuritySandboxViolation。     
  4.     
  5.         使用LocalConnections。 LocalConnections的两个不利因素是:         
                  
    • 您需要不断重新生成唯一的连接名称                 通过将两个LocalConnections连接到同一个来避免抛出的错误                 信道。
    •             
    • LocalConnections确实有可以调用的带宽限制                 如果有大量流量或消息是,则减速                 太大了。
    •         
        
  6.     
  7.         使用loader.content.foo.bar.baz之类的直接操作;         我不喜欢这种解决方案,因为它更难维护。它是         从设计的角度来看,很多更糟糕:你想要使用         在这种情况下尽可能地封装 - 这种技术         积极反对。