希望这是一个很容易的问题:)
一些细节: 我使用的是Flash CS5,从未接触过Flex。此外,正在进行加载的SWF将是客户端 SWF,因此希望找到一种可以使用简单几行的解决方案。
基本上我正在处理的SWF中只包含一个简单的字符串:
var theString = "theString";
trace("theString = "+theString);
现在我一直在研究一个测试加载器SWF,它将加载我的String SWF并以最简单的方式获取变量。有什么想法吗?以下是我目前的破解代码:
function loaderComplete(event:Event)
{
trace("... in loaderComplete");
getString = loader.content.toString();
trace("loader.content = "+loader.content);
trace("... getString = "+getString);
}
这是我的输出窗口:
theString = theString
... in loaderComplete
loader.content = [object MainTimeline]
... getString = [object MainTimeline]
我在Stack上搜索并发现了类似的问题,但没有一个是我需要的:
tracking video files - embedding flv to swf
^基本上我正在尝试做什么,还没有答案
to pass variable from one swf to another swf in as3
^听起来就像我的问题,但答案是一个Flex应用程序示例
pass var values from one swf to another swf who is loaded inside the firts one in AS3
^这很接近,但我不确定如何实施所选择的答案,似乎也比我需要的更复杂
请帮忙!
答案 0 :(得分:2)
让我们澄清一下: 1.加载器swf,我们将调用父进程。 2.父母加载的瑞士法郎我们会给孩子打电话。
Child包含一个字符串,您希望父级能够读取该字符串> 所以... Child必须为字符串定义一个公共变量。 (这意味着你必须为它使用一个Class文件,因为你不能在时间轴上公开一个属性。)
最后,家长会尝试获取该属性。您可能希望将其包装在try / catch中以处理不存在字符串的情况。
以下是Child Class的示例。
package
{
import flash.display.Sprite;
/**
* ...
* @author Zach Foley
*/
public class Child extends Sprite
{
public var value:String = "This is the child Value";
public function Child()
{
trace("Child Loaded");
}
}
}
这是父装入程序类:
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
/**
* ...
* @author Zach Foley
*/
public class Parent extends Sprite
{
private var loader:Loader;
public function Parent()
{
trace("PArent Init");
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest("child.swf"));
}
private function onLoaded(e:Event):void
{
trace("Child Loaded");
trace(loader.content['value']);
}
}
}
输出将是: PArent Init 孩子加载 孩子加载 这是子值
答案 1 :(得分:0)
您可以从加载的swf访问变量和代码。首先,确保加载器和加载的内容都使用相同的AVM,这意味着两个项目都使用相同版本的语言(as3或as as2)
感谢loader complete handler:
loaderComplete(evt:Event):void{
var mc:MovieClip = loader.content as MovieClip;
if(!mc){
trace("Error loading");
return;
}
trace("Your string: " + mc.theString);
}
我没有测试过这段代码,但它应该可行