2

ロードした as3 swf と as2 swf の間でデータを共有しようとしています。問題は、as3 swf によって書き込まれた localshared オブジェクトを as2 swf で読み取れないように見えることです。共有オブジェクトへの参照を取得しようとすると、単に undefined が返されます

// AS3

_SharedObj.objectEncoding = ObjectEncoding.AMF0;
_SharedObj.data.blah = 'str';
_SharedObj.flush(500);

// ... some code to handle the flush status. I verified that the values were flushed.


// AS2

var so = SharedObject.getLocal('somestr', '/');
trace(so);  // undefined! 

私はここで途方に暮れています。AS3 から AS2 共有オブジェクトを読み取ることはできますが、それ以外の方法ではできません。両方が同じパス '/' を参照していることを確認しました (具体的には localhost、ファイル システム内の物理ファイルも確認しました。これは、Mac の #SharedObjects ディレクトリの #localhost ディレクトリにあります)。objectEncoding は、 AS2 AMF 形式。

ドキュメントでは、このエンコーディングを as2 が同じ共有オブジェクトにアクセスできるように設定するように具体的に述べているため、これが可能であることを意味すると思います。

誰にもアイデアはありますか?

4

4 に答える 4

2

FlashDevelopを使用する場合、次のコードは私にとって完璧に機能します。

//AS3
var so : SharedObject = SharedObject.getLocal('somestr', '/');
so.objectEncoding = ObjectEncoding.AMF0;
so.data.blah = 'str';
so.flush();

//AS2
var so = SharedObject.getLocal('somestr', '/'); 
trace(so.data.blah);  // str
于 2010-06-21T19:02:27.757 に答える
0

あなたの問題は、Flash Player用に生成されたswf idであり、SharedObjectの使用に使用されます。これはコードでは表示されませんが、SharedObject ファイルを検索すると表示されます。それが安全機能です。そのための回避策はわかりません。

于 2009-10-14T10:43:40.307 に答える
0

私も同様の問題に遭遇しました。最終的には、AS2 SWF を使用して LSO を読み取り/書き込みし、JavaScript/ExternalConnection を介して AS3 SWF と通信させるという凶悪なルートに行きました。それはひどいものでしたが、確実に機能しました。

于 2009-10-14T14:23:07.890 に答える
0

私は同じ問題を抱えていて、上記のDudiの答えが道だと思います.SharedObject.getLocal()を呼び出した後、コードに次の行を追加し、AS2 swfはAS3で記述された共有オブジェクトをロードできました.

so.objectEncoding = ObjectEncoding.AMF0

ありがとうドゥディ!

于 2011-12-05T15:36:14.957 に答える