Как просто загрузить переменные в мой динамический текст, используя flashvars на Actionscript 3? - PullRequest
0 голосов
/ 29 марта 2012

Я установил простой динамический текст на моей сцене. Я хочу использовать подход 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]);
}

Но что происходит сейчас, это:

Как мне загрузить эту valueStr в мой myText.text?

Это еще не инициализировано ...

Спасибо!

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Добавьте прослушиватель событий для Event.COMPLETE в свой объект loaderInfo, чтобы вы знали, когда ваш 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;
}

Обратите внимание, что выне может иметь слишком много данных в ваших flashVars, но вы можете передать URL в текстовый файл, который может содержать больше.В приведенном ниже примере, если flashVar с именем testFile указывает на текстовый файл, он затем загружается и добавляется к 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);
}
0 голосов
/ 30 марта 2012

Из того, что вы сказали, похоже, что вы пытаетесь сделать это на временной шкале.Поскольку вы можете получить доступ к объекту 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']; 
0 голосов
/ 29 марта 2012

Вы можете инициализировать и добавить текстовое поле в коде.

var myTexts2:TextField = new TextField()
this.addChild(myTexts2);
var keyStr:String;
var valueStr:String;
......
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...