首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex应用嵌入并与旧版Flash 8应用进行通信

Flex应用嵌入并与旧版Flash 8应用进行通信
EN

Stack Overflow用户
提问于 2009-02-12 19:36:51
回答 3查看 601关注 0票数 1

我目前维护着一个用Flash8 (AS2)编写的应用程序,它用于嵌入和控制一些自动生成的SWF。自动生成的SWF也是Flash8(实际上,它们至少在7中工作,甚至可能更老),所以我目前的应用程序能够直接引用嵌入式SWF中的变量和函数。

我们现在正在开发这个应用程序的新版本,用Flex编写。我们需要复制当前应用程序的嵌入和控制自动生成的AS2 SWF的功能。但是,基于AS3的SWF不能引用嵌入式基于AS2的SWF中的变量或函数。不幸的是,我们无法控制自动生成工具,因此我们无法将其更改为输出基于AS3的SWF。

让AS3和AS2主权财富基金沟通的唯一真正的解决方案是使用LocalConnection。我需要创建一个包装器Flex,它将加载自动生成的SWF并充当代理,通过LocalConnection与我的AS2应用程序通信,并对自动生成的SWF执行任何需要执行的操作。然而,这有一个问题。代理SWF需要知道要使用什么LocalConnection ID,但我找不到一种方法将ID传递给它(我不能只是硬编码一些随机的ID,因为我需要能够同时支持此应用程序的多个实例)。

有人解决这个问题了吗?有没有办法获得嵌入式SWF的唯一标识符?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-12 22:51:16

我不确定这个应用程序是如何工作的,所以如果我错了,请原谅。如果flex实例必须加载AVM1代理,那么不是可以通过包含要使用的LocalConnection生成的ID的URL来注入一个flash-var吗?

除了您的评论之外,还添加了如何向AVM1电影发送变量。这至少在本地运行良好(未在网络上测试):

AS3 - FP10

代码语言:javascript
复制
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”时间线上的第一帧):

代码语言:javascript
复制
trace(id); // (_root.id)

顺便说一句,偶然发现了来自Libspark的以下类:http://www.libspark.org/svn/as3/ForcibleLoader/src/org/libspark/utils/ForcibleLoader.as

票数 2
EN

Stack Overflow用户

发布于 2009-02-12 20:09:10

两者可以通过服务器(即中介者)进行通信吗?

票数 0
EN

Stack Overflow用户

发布于 2009-10-15 00:37:48

这是一篇相当复杂的文章,主题是跨AVM的通信:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/542890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档