Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何使用ActionScript3上的flashvars将变量加载到我的动态文本中?_Actionscript 3_Actionscript_Flash - Fatal编程技术网

Actionscript 3 如何使用ActionScript3上的flashvars将变量加载到我的动态文本中?

Actionscript 3 如何使用ActionScript3上的flashvars将变量加载到我的动态文本中?,actionscript-3,actionscript,flash,Actionscript 3,Actionscript,Flash,我在舞台上设置了一个简单的动态文本。 我想使用flashvars方法: var keyStr:String; var valueStr:String; var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; //set the paramObj variable to the parameters property of the LoaderInfo object for (keyStr in paramObj)

我在舞台上设置了一个简单的动态文本。 我想使用flashvars方法:

var keyStr:String;
var valueStr:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;   //set the paramObj variable to the parameters property of the LoaderInfo object
for (keyStr in paramObj) // I only have one parameter to load
{
    valueStr = String(paramObj[keyStr]);
}
但现在发生的是:

如何将此值str加载到myText.text

它还没有初始化


谢谢

您可以初始化并在代码中添加文本字段

var myTexts2:TextField = new TextField()
this.addChild(myTexts2);
var keyStr:String;
var valueStr:String;
......

从你所说的,听起来你想在时间表上做这件事。由于可以从根时间轴上的任何帧访问loaderInfo对象,因此只需在actionscript面板中的文本字段实例化帧上添加以下行:

// No need to loop through the parameters object as we're only interested in one
myText.text = LoaderInfo(this.stage.loaderInfo).parameters['myFlashVar']; 

在loaderInfo对象上为event.COMPLETE添加事件侦听器,以便您知道swf何时已完全加载,因此其所有属性都已正确初始化/准备就绪:

this.loaderInfo.addEventListener(Event.COMPLETE, ready);//wait for this swf to be loaded and have flashVars ready
function ready(event:Event):void{
    var params:Object = this.loaderInfo.parameters;
    var paramValues:String = '';
    for(var i:String in params) paramValues += i + " : " + params[i] + "\n";
    myText.text = paramValues;
}
请注意,FlashVar中不能有太多数据,但可以将url传递给一个文本文件,该文件可以容纳更多数据。在下面的示例中,如果名为
testFile
的flashVar指向一个文本文件,则该文本文件将被加载并附加到
myText

var myText:TextField = addChild(new TextField()) as TextField;
myText.multiline = true;
myText.border = true;
myText.autoSize = TextFieldAutoSize.LEFT;
myText.wordWrap = true;

this.loaderInfo.addEventListener(Event.COMPLETE, ready);//wait for this swf to be loaded and have flashVars ready
function ready(event:Event):void{
    var params:Object = this.loaderInfo.parameters;
    var paramValues:String = '';
    for(var i:String in params) paramValues += i + " : " + params[i] + "\n";
    myText.text = paramValues;
    //load larger text from file
    if(params['testFile'] != null){
        var textLoader:URLLoader = new URLLoader(new URLRequest(params['testFile']));
        textLoader.dataFormat = URLLoaderDataFormat.TEXT;
        textLoader.addEventListener(Event.COMPLETE, textReady);
    }
}
function textReady(event:Event):void{
    myText.appendText(event.target.data);
}

在加载程序信息上使用Event.COMPLETE处理程序,然后创建一个URLLoader,从通过FlashVarsB传递的url加载文本。但是如何将这些变量加载到文本对象?到那时它们还没有初始化,我得到一个空对象错误。是否有一个事件知道我的所有对象何时初始化?这就是我试图在注释中解释的。您要询问的事件是event.COMPLETE,如我前面所述,将其添加到loadInfo对象中,然后在处理程序中进行初始化…有关示例,请参阅我的答案。