2011-08-03 64 views
1

希望这是一个很容易的问题:)如何通过从SWF一个字符串到另一个SWF

一些细节: 我使用Flash CS5,从未接触过的Flex。此外,正在执行加载的SWF将是SWF的客户端,因此希望能够使用简单几行代码的解决方案。

基本上我工作的SWF里面只包含简单的字符串:

var theString = "theString"; 
trace("theString = "+theString); 

现在我一直在测试装载机SWF将载入我的字符串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] 

我搜索的堆栈,发现类似的问题,但没有一个是正是我需要的:

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

^这是接近,但我不知道如何实现所选择的答案,似乎也有点复杂,那么我需要

请帮助!

回答

2

让我们明确一点: 1.装载机SWF,我们将调用父。 2.由父母装载的swf我们将调用孩子。

孩子包含一个字符串,并且您希望父母能够读取该字符串> 因此... 孩子必须为该字符串定义一个公共变量。 (这意味着您必须使用Class文件,因为您无法在时间轴上声明属性公开。)

最后,父级将尝试获取该属性。您可能想要将其封装在try/catch中以处理字符串不存在的情况。

这是一个子类的例子。

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']); 
    } 

} 

}

输出将是: 父初始化 儿童加载 儿童加载 这是孩子的价值

+0

谢谢!这工作:)现在只需说服客户进行一些更新... –

0

您可以从加载的swf访问变量和代码。首先,确保两个加载器和加载的内容使用相同的AVM,这意味着这两个项目中使用的语言的相同版本(包括AS3或两者AS2)

感谢在装载机完整的处理程序:

loaderComplete(evt:Event):void{ 
    var mc:MovieClip = loader.content as MovieClip; 
    if(!mc){ 
     trace("Error loading"); 
     return; 
    } 
    trace("Your string: " + mc.theString); 
} 

我没有测试代码,但它应该工作

+0

嗯,我曾与这一个空的错误,但会继续努力,以得到它的工作以及 –

相关问题