0

2 つの SWF が相互にやり取りする LocalConnection を使用する場合。オブジェクトは値または参照によって渡されますか?

4

2 に答える 2

2

LocalConnection オブジェクトを介して渡されたデータは、送信者によってファイルにシリアル化され、受信者によって逆シリアル化されます。つまり、新しいオブジェクトが構築されます。

使用されるシリアライゼーション プロトコルは AMF だと思います (registerClassAliasオブジェクトを使用してクラスをマップすると、渡したのと同じ型で受信されます。そうしないと、Objectオブジェクトになります)。

したがって、受信側の swf では、オブジェクトの新しいコピーを取得します。また、クラスをマップする場合は、パラメーターなしのコンストラクターまたはオプションのパラメーターのみを取るコンストラクターが必要であることに注意してください。そうしないと、受信側がオブジェクトを逆シリアル化するときにオブジェクトがエラーをスローします。

于 2011-04-08T21:42:10.357 に答える
1

まず、swf間の通信は、参照ではなく、値を渡す必要があります(実際のパラメーターは完全に評価され、結果の値は、正式なパラメーターの値を保持するために使用される場所にコピーされます)。参照渡しは、各swfが存在するサンドボックスに違反します。(localconnectionは複数のswfファイル間で使用される可能性があるため)。

とにかく、なぜあなたが尋ねるのか知りたいのですが?防御的なコピーが必要かどうかを確認していますか。(そのため、私はこの情報を自分で掘り下げることにしました。)

于 2011-04-08T20:04:26.710 に答える