Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > Сложное взаимодействие классов


Автор: VingradFan 6.7.2011, 10:46
Всем привет! Подскажите пожалуйста наиболее простое решение. Спасибо

Здравствуйте. Ситуация такова:

Класс А:
- имеет метод С получающий URL файла в кач-ве параметра
- метод С начинает загружать файл и добавляет загрузчику слушателя Д, который запускается как только файл загружен
- слушатель Д парсит файл, как только он загружен


Класс Б:
- создает экз. класса А
- вызывает метод С, передает ему УРЛ файла



Вопрос: как мне в классе Б получить результат парсинга?
Прошу прощение за абстрактное описание проблемы, если ничего не понятно, я попробуй переформулировать.
Благодарю за помощь!


Класс А:
Код

package tools{
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.events.Event;
    public class XmlToArr {

        private var playlistXml:XML;
        private var xmlUrlRequest:URLRequest;
        private var xmlUrlLoader:URLLoader;
        public function XmlToArr (xmlUrl:String) {
        }

        public function Convert (xmlUrl:String) {
            this.xmlUrlRequest = new URLRequest(xmlUrl);
            this.xmlUrlLoader = new URLLoader(this.xmlUrlRequest);
            this.xmlUrlLoader.addEventListener (Event.COMPLETE,listenerComplete);
        }

        private function listenerComplete (event:Event) {
            this.playlistXml = new XML(this.xmlUrlLoader);
        }
    }
}




Класс Б:
Код

package player{
    import tools.XmlToArr;
    import flash.display.MovieClip;

    public class Playlist extends MovieClip {
        private var playlistUrl:XML;
        public var playlistArr:Array;

        public function Playlist (playlistUrl:String):void {
            var newXmlToArr:XmlToArr = new XmlToArr(playlistUrl);
            newXmlToArr.Convert(playlistUrl);
        }
    }
}

Автор: SoWa 6.7.2011, 10:52
Очень и очень просто smile
Наследуй класс А от EventDispatcher, в слушателе-парсере в конце подпиши так: 
Код

this.playlistXml = new XML(this.xmlUrlLoader);
this.dispatchEvent(new Event("MyCompleteEvent"));

А в классе В вставь строчку
Код

var newXmlToArr:XmlToArr = new XmlToArr(playlistUrl);
newXmlToArr.addEventListener("MyCompleteEvent", classAHandler);
newXmlToArr.Convert(playlistUrl);

и напиши обработчик.

Автор: VingradFan 6.7.2011, 11:08
SoWa, спасибо большое!
Вроде, разобрался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)