2011-04-08 148 views

回答

1

首先swf之間的通信必須通過值傳遞(實際參數是完全評估和結果值被複制到一個位置被用來保存形式參數的值),而不是引用。按引用傳遞將違反每個swf所在的沙箱。 (因爲可以在多個swf文件之間使用本地連接)。

反正我很想知道你爲什麼問?你在檢查是否需要防禦性複製。 (這就是爲什麼我決定自己挖掘這些信息的原因。)

+0

我有一個非常大的Flex應用程序,它有一個數據管理器類。我有一個主swf,它產生多個帶有獨立swf的子窗口。每個swf都需要訪問該數據對象,並且如果通過引用傳遞數據綁定,則更容易保留數據綁定。 – 2011-04-08 20:17:34

+0

再加上LocalConnection有50k的限制這個事實 – 2011-04-08 20:19:21

2

通過LocalConnection對象傳遞的數據被髮送方序列化爲文件,然後接收方將其反序列化,這意味着它構建了一個新對象。我認爲(如果你使用registerClassAlias映射你的類,你的對象將被接收到與你通過的相同類型;如果你不這樣做,你將會得到Object對象)。

所以,在接收瑞士法郎你會得到你的對象的新副本。另外,請記住,如果您確實需要映射類,則必須具有無參數構造函數或僅包含可選參數的構造函數;否則,當接收方反序列化它們時,你的對象會拋出一個錯誤。

+0

是的,我想盡可能多(雖然不知道AMF)。不幸的是,我需要數據綁定功能,所以我將不得不通過回調來完成 – 2011-04-08 23:07:52