Actionscript 3 访问嵌入式SWF中的变量?

Actionscript 3 访问嵌入式SWF中的变量?,actionscript-3,flash,Actionscript 3,Flash,我正在编写一个AS3应用程序,将一个外部SWF文件加载到舞台上的电影剪辑中。我需要读取嵌入SWF中的一个变量。我想我可能可以通过bgURL实现这一点,但我不知道如何实现 如何读取嵌入SWF中的变量 var bgLoader:Loader = new Loader(); var bgURL:URLRequest = new URLRequest("file.swf"); bgLoader.load(bgURL); addChild(bgLoader); 这类似于跟踪(MovieClip(bgL

我正在编写一个AS3应用程序,将一个外部SWF文件加载到舞台上的电影剪辑中。我需要读取嵌入SWF中的一个变量。我想我可能可以通过
bgURL
实现这一点,但我不知道如何实现

如何读取嵌入SWF中的变量

var bgLoader:Loader = new Loader();

var bgURL:URLRequest = new URLRequest("file.swf");
bgLoader.load(bgURL);
addChild(bgLoader);

这类似于跟踪(MovieClip(bgLoader.content.Player.played),但请确保访问事件中的内容。完整处理程序:

bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,bgLoaded);
function bgLoaded(event:Event):void{ trace(MovieClip(bgLoader.content).Player.played) }
bgLoader.content返回一个DisplayObject,但您需要以MovieClip的形式访问内容。要做到这一点,请使用

这是假设您的外部swf也是AS3(good point Teo.sk!) 此位:
\u root.Player.played
看起来像AS2。很遗憾,您无法访问 变量直接形成加载的AS2电影。 尽管如此,您仍然可以使用类在变量之间来回发送变量 AS2和AS3。幸运的是,格兰特·斯金纳编写了一个很好的小实用程序,名为
要简化此操作,取决于变量相对于file.swf的位置。例如,如果file.swf的顶层有一个变量
myVar
(将其视为全局变量),您应该能够执行如下操作:
trace(MovieClip(bgLoader.content).myVar)swf完全加载后,编辑实际上有几层深。如果加载的MovieClip被命名为“top”,我将如何访问它:trace(top.\u root.Player.played);我不太明白你对MovieClip做了什么,“MovieClip(obj).varName”是什么意思?外部swf也是AS3吗?仅供参考:你的问题是关于被拒绝的编辑。这就是为什么它比通常情况下受到更多关注的原因。我刚刚发现嵌入式swf是AS2。你确定我不能访问变量吗?因为,当我在我的C#Windows应用程序中嵌入同一个swf时,我可以访问它的变量。我很确定你不能从加载它的as3 swf访问as2变量。as2 swf作为as3中的一个实例运行,该实例受到限制,以便并排运行AVM1(as1和2 swf)和AVM2(as3 swf)。我不知道你可以从C应用程序中访问变量,这很酷。