簡體   English   中英

在Flex3中獲取Fscommand

[英]Get Fscommand in Flex3

我有一個swf文件,在單擊提交按鈕時,我使用fscommand獲得最終輸出,我正在flex3的SWFloader中加載該swf。我需要獲取fscommand值作為Alert,如何首先獲取該值並顯示為警報。

提前致謝

fscommand不能用於已加載SWF和包含SWF的通信。

來自livedocs

fscommand:讓SWF文件與Flash Player或托管Flash Player的程序(例如Web瀏覽器)通信。 您還可以使用fscommand()函數將消息傳遞給Director或Visual Basic,Visual C ++和其他可以承載ActiveX控件的程序。

您可以在已加載的swf中調用方法,或者直接訪問其屬性,或者使用事件,或者使用本地連接在父SWF和已加載SWF之間傳遞數據。

從技術上講這是可行的,但不是一個好主意。 您需要注冊一個回調,該回調將調用子swf(通常子swf完成)。 但是,您將冒很多頭疼的風險,並且與其他選項相比,您對瀏覽器的依賴性更大。 這也將比僅使用AS的解決方案要慢。

您的狀況更好(按此順序):

  1. 使用共享的Singleton。 這樣就可以完全分離兩個swf,而無需在兩者之間進行任何主要協調。 如果您希望子swf擁有​​自己的ApplicationDomain ,則可能會導致唯一真正的潛在問題,但是即使如此,也存在一些變通方法
  2. 使用事件。 如果您的子swf調度了一個冒泡的,不可取消的事件,並由父swf記錄了event.target ,則可以使用此方法。 但是,您可能需要進行調整以避免SecuritySandboxViolation
  3. 使用LocalConnections。 對LocalConnections的兩個不利因素是:
    • 您將需要不斷重新生成唯一的連接名,以避免將兩個LocalConnections連接到同一通道而引發錯誤。
    • LocalConnections確實具有帶寬限制,如果通信量很大或消息太大,則可能會導致速度降低。
  4. 使用像loader.content.foo.bar.baz這樣的直接操作; 我不喜歡這種解決方案,因為它很難維護。 這也是從設計的角度來看更糟糕 :你想在這種情況下使用的封裝盡可能多的-這種技術積極致力於對抗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM