![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]() ![]()
Сообщение
#1
|
|
![]() C:\> ![]() ![]() ![]() ![]() ![]() Группа: Супермодераторы Сообщений: 1598 Регистрация: 10.04.2006 Из: Млечный Путь, 3-я планета от Солнца, Россия, Московская область, Жуковский. Пользователь №: 293 ![]() |
Есть класс: (LoadAppInfo.as) :
Код package { import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; /** * ... * @author tihoho */ public class LoadAppInfo { private var loader:URLLoader; private const urlProductPath:String = "../src/data.xml"; private var massNames:Array = []; private var LOADED:Boolean = new Boolean(false); //------------------------------------------------------- public function LoadAppInfo():void { loader = new URLLoader(new URLRequest(urlProductPath)); loader.addEventListener(Event.COMPLETE, productListLOADED); } //------------------------------------------------------- public function get isLOADED() : Boolean { return LOADED; } //-------------------------------------------------------- private function productListLOADED(e:Event):void { var xml:XML = new XML(e.target.data); for each (var tmp:XML in xml.product) { massNames.push(tmp.name); } LOADED = new Boolean(true) } //-------------------------------------------------------- public function get getNamesList():Array { return massNames; } //-------------------------------------------------------- //-------------------------------------------------------- } } А вот так я его пытаюсь использовать: Код package { import flash.display.Sprite; import flash.text.TextField; import LoadAppInfo; public class Main extends Sprite { // ----------------------------------------------------------------- private var txt:TextField; private var appdata:LoadAppInfo; // ----------------------------------------------------------------- public function Main():void { txt = new TextField(); txt.width = stage.stageWidth; txt.height = stage.stageHeight; addChild(txt); appdata = new LoadAppInfo(); if (appdata.isLOADED) { txt.text = appdata.getNamesList.join('\n') } else { txt.text = "печалька."; } } // ---------------------------------------------------------------- } } Но "почему-то" выводит печальку. Что я не так делаю, объясните пожалуйста. -------------------- Вопрос-ответ для flash-разработчиков
С тех пор, как за Теорию Относительности принялись математики, я ее сам больше не понимаю. (с) Эйнштейн А. |
|
|
![]()
Сообщение
#2
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1102 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Первая ошибка в том, что печалька (Main) работает по схеме синхронного кода, тогда как LoadAppInfo имеет асинхронный код.
Для начала, можно блок if (appdata.isLOADED) повесить в метод на кнопку. Чтоб так сказать почувствовать работу асинхронности. А уже далее по уму делать взаимодействие Main и LoadAppInfo по-настоящему асинхронным. -------------------- |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.01.2013 - 01:02 |