сохранение данных xml в переменную AS3/onComplete

im новое для AS3. Глядя на сохранение данных, которые я загрузил из xml-файла в переменную. затем вызовите эту переменную позже.

heres мой код:

package {

import flash.display.MovieClip;
import flash.events.*;
import flash.display.Stage;
import flash.text.TextField;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLLoaderDataFormat;
import flash.net.URLVariables;

public class myClass extends MovieClip {
        public static var objectOneTotal:int = 1;
        public static var objectOneCurrent:int = 1;


    public function myClass() {


        var myXML:XML;
        var myLoader:URLLoader = new URLLoader();
        myLoader.load(new URLRequest("beers.xml"));
        myLoader.addEventListener(Event.COMPLETE, processXML);

            function processXML(event:Event):void {
            myXML = new XML(event.target.data);

            myClass.objectOneCurrent = int(myXML.current);
            myClass.objectOneTotal = int(myXML.total);

            trace(myClass.objectOneCurrent);
            trace(myClass.objectOneTotal);

            }

        trace(myClass.objectOneCurrent);
        trace(myClass.objectOneTotal);
        var objectOneStart:int = objectOne.x;
        objectOne.x = (objectOneCurrent/objectOneTotal)  * (finish.x - objectOneStart);

    }

}

}

Что он делает: когда я запускаю его, глядя на трассировку, он отслеживает начальные значения объектов «1» перед его отслеживанием значений, которые загружаются из xml. Поэтому я считаю, что это загрузка данных, но программа работает только с функцией processXML после остальной части кода. или что-то.

Я не совсем уверен. но мне нужны последние две следы, чтобы прочитать данные xml.

благодаря

0

1 ответы

Поскольку AS3 является асинхронным, он будет выполнять весь метод MyClass до загрузки XML. Когда xml загружается, код, определенный в processXML , выполняется для его обработки.

Решение состоит в том, чтобы сделать дескриптор processXML установленным object1.x :

package {

    import flash.display.MovieClip;
    import flash.events.*;
    import flash.display.Stage;
    import flash.text.TextField;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLVariables;

    public class myClass extends MovieClip {
            public static var objectOneTotal:int = 1;
            public static var objectOneCurrent:int = 1;


        public function myClass() {
            var myXML:XML;
            var myLoader:URLLoader = new URLLoader();
            myLoader.load(new URLRequest("beers.xml"));
            myLoader.addEventListener(Event.COMPLETE, processXML);

           //these will fire before the xml is loaded
            trace(myClass.objectOneCurrent);
            trace(myClass.objectOneTotal);


        }

        public function processXML(event:Event):void {
            myXML = new XML(event.target.data);

            myClass.objectOneCurrent = int(myXML.current);
            myClass.objectOneTotal = int(myXML.total);

           //these fire after the xml is loaded
            trace(myClass.objectOneCurrent);
            trace(myClass.objectOneTotal);

            var objectOneStart:int = objectOne.x;
            objectOne.x = (objectOneCurrent/objectOneTotal)  * (finish.x - objectOneStart);

        }
    }
}
0
добавлено