1

私は現在、Flash 8(AS2)で記述されたアプリケーションを保守しています。このアプリケーションは、自動生成されたSWFを埋め込んで制御するために使用されます。自動生成されたSWFもFlash8であるため(実際には、少なくとも7で動作し、場合によってはそれよりも古い)、現在のアプリは組み込みSWF内の変数と関数を直接参照できます。

現在、Flexで記述されたこのアプリケーションの新しいバージョンに取り組んでいます。自動生成されたAS2SWFを埋め込み、制御する現在のアプリの機能を複製する必要があります。ただし、AS3ベースのSWFは、組み込みAS2ベースのSWF内の変数または関数を参照できません。残念ながら、自動生成ツールを制御できないため、AS3ベースのSWFを出力するように変更することはできません。

AS3およびAS2SWFを通信させるための唯一の実際の解決策は、LocalConnectionを使用することです。自動生成されたSWFをロードしてプロキシとして機能し、LocalConnectionを介してFlexアプリと通信し、自動生成されたSWFに対して実行する必要があることをすべて実行するラッパーAS2SWFを作成する必要があります。ただし、これには問題があります。プロキシSWFは、使用するLocalConnection IDを知る必要がありますが、IDを通信する方法が見つかりません(この複数のインスタンスをサポートできる必要があるため、ランダムIDをハードコーディングすることはできません)同時にアプリ)。

誰かがこれを解決しましたか?埋め込まれたSWFに何らかの一意の識別子を取得する方法はありますか?

4

3 に答える 3

2

アプリケーションがどのように機能するか正確にはわからないので、間違っていたらすみません。フレックス インスタンスが AVM1 プロキシをロードする必要がある場合、使用する LocalConnection 用に生成された ID を含む URL を介して flash-var を挿入することはできませんか?

あなたのコメントに加えて、変数を AVM1 ムービーに送信する方法を追加しました。これは、少なくともローカルでは問題なく動作します (ネットワークではテストされていません):

AS3 - FP10 :

loader = new Loader();

var request:URLRequest = new URLRequest("as2proxy.swf");
var variables:URLVariables = new URLVariables();
variables.id = "local_connection_id";
request.data = variables;

loader.load(request);

AS2 - FP7 ( 「as2proxy.swf」のタイムラインの最初のフレーム):

trace(id); // (_root.id)

ところで、Libspark の次のクラスにつまずいた: http://www.libspark.org/svn/as3/ForcibleLoader/src/org/libspark/utils/ForcibleLoader.as

于 2009-02-12T22:51:16.483 に答える
0

以下は、AVM の境界を越えた通信に関するかなり複雑な記事です。

http://asserttrue.com/articles/2006/05/16/library-type-assets-in-actionscript-3-0-using-assets-created-with-current-releases-of-flash-authoring

于 2009-10-15T00:37:47.807 に答える
0

この 2 つはサーバー (メディエーター) を介して通信できますか?

于 2009-02-12T20:09:10.443 に答える