2011-04-08 88 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