2011-11-01 101 views
2

我有一个主要的.as和我加载.swf在我的.as.It工作正常,现在我想要的变量从.swf并将其传递到.as。我怎样才能做到这一点?请。帮帮我! 我的.swf文件的编码如何将变量从.swf文件传递给.as文件?

function formatMessage(chatData:Object) 
{ 
var number:uint = chatData.user; 
trace(chatData.user); 
} 
private function addText() 
    { 
_loader = new Loader(); 
_loader.x=10; 
_loader.y=200; 
_loader.load(new URLRequest("receive.swf"));//Here i Can Load the Swf.Here how Can i acces the Variable of number ? 
addChild(_loader); 
    } 
+0

这个变量是DisplayObject? – IronBCC

+0

ya其显示对象 – Mercy

回答

1

首先要记住的是,这不适用于ActionScript VM版本。仅意味着AVM2和AVM2可以进行通信(AVM1之间可能会进行通信,但需要更多独创性)。

添加完成事件监听器_loader.contentLoaderInfo财产称为onLoad

_loader.x=10; 
_loader.y=200; 
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad); 

现在用onLoad功能将需要提取加载的内容和小铸造。

function onLoad(evt:Event):void { 
    var target:DisplayObject = LoaderInfo(evt.target).content as DisplayObject; // cast as DisplayObject 
    trace("readMe = ", target["your_variable"]); // trace output "your_variable" 
} 

有更清晰的形式完成这项工作,但这将允许您从嵌套的SWF中提取值。

+0

先生,我没有使用嵌套瑞士法郎。只是我将swf添加到.as文件中,我的目标是从.swf检索变量 – Mercy

+0

@ user993437 - 您的ActionScript文件是否执行?是的,它确实。当您执行ActionScript时,您将以SWF的形式执行它(或者在FLA中执行,而FLA在编译时是SWF)。使用这一行逻辑,编译后的SWF将加载另一个名为'reciever.swf'的SWF文件。将一个SWF加载到另一个SWF的方法称为嵌套。你可以考虑你自己的术语,但是这种情况是嵌套的。 –

+0

谢谢先生它的非常有用的信息。使用Flash Builder我无法跟踪值。是否有可能在addchild()中添加文本? – Mercy

0

的DisplayObjectContainer(_loader.content).getChildByName( “someName”);

someName变量必须是公共的,在主时间线或主文件中声明。

+0

1061:通过具有静态类型flash.display:DisplayObject的引用调用可能未定义的方法getChildByName。 _loader.content.getChildByName(“chatSharedObjectName”);同时添加此代码会出现像这样的错误。 – Mercy

+0

DisplayObjectContainer(_loader.content).getChildByName(..) – IronBCC

相关问题