|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
Отложение выполнение или аналог sleep'a.
Доброе время суток.
Столкнулся с проблемой необходимости запустить тот или иной метод, но не сразу, а после... давайте по порядку. Есть плеер, который получает URL для проигрывания видео с сервера (XML файлом). public function getVideoFile():String { if (this.videoFileUrl.length <= 3) { this.setVideoFileUrl(this.playlistLoader.getVideoUrl()); } return this.videoFileUrl; } public function videoPlay():void { this.videoStream.play(this.getVideoFile()); } private function loadXmlData():void { var urlRequest:URLRequest = new URLRequest("http://url.to/video/file/"); this.xmlUrlLoader = new URLLoader(); this.xmlUrlLoader.addEventListener(Event.COMPLETE, this.completeListener); this.xmlUrlLoader.load(urlRequest); } private function completeListener(e:Event):void { this.xmlData = new XML(this.xmlUrlLoader.data); } public function getVideoUrl():String { return this.xmlData.child('item').attributes()[0]; } Как это обойти, что мне сделать? Попробовал добавить новый метод в playlistLoader: public function getVideoUrl():String { while (!this.checkForLoaded()) { trace('Loading'); } return this.xmlData.child('item').attributes()[0]; } private function checkForLoaded():Boolean { if (this.xmlUrlLoader.bytesTotal != this.xmlUrlLoader.bytesLoaded) { return false; } return true; } Я уверен ситуация стандартная, и её миллион раз решали, но я новичок, и хотел бы попросить у вас помощи. |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
ничего не надо обходить. Для загрузчиков _подставить что угодно_ есть событие COMPLETE, которое вызывается, когда загрузка _подставить что угодно_ закончится. от этого и отталкивайтесь. И не нужно никаких бесконечных циклов, которые убьют выполнение кода по прошествии 15-ти(или сколько вы там поставите) секунд.
Подгрузили XML, дождались COMPLETE, распарсили результат, взяли урл и загрузили видео. Не вижу проблемы. UPD: Отходя от темы раговора, писать следует а не
__________________
#flasher@irc.trg.ru:6667 Последний раз редактировалось Obi; 24.11.2009 в 21:35. |
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
Obi, я такого же мнения. Посмотрите код, там как раз таки используется событие COMPLETE, где собственно переменной xmlData присваиваются данные из загруженной XML.
Но проблема в том, что метод который отдает переменную xmlData, выполняется раньше, чем выполниться COMPLETE. Тут-то мне и надо проверить, выполнился COMPLETE или нет, если нет, то подождать когда выполнится и попробовать снова. |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Что значит «выполняется раньше»? Когда скажете, тогда и будет выполняться. Выполняйте его по событию COMPLETE.
__________________
#flasher@irc.trg.ru:6667 Последний раз редактировалось Obi; 24.11.2009 в 21:42. |
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
Я же объясняю, что метод класса загрузчика XML "полчить урл для видео-плеера" дергается из класса видео-плеера. И он не знает, загрузилась там XML или ещё не загрузилась.
То есть алгоритм таков: 1. Создаем экземпляр класса видео-плеера 2. В конструкторе класса видел-плеера создается объект класса загрузчик-плейлиста 3. В конструкторе класса загрузчика-плейлиста сразу же загружается XML с сервера 4. В классе видео-плеера посылается запрос к классу загрузчика-плейлиста на получения УРЛ для видео-плеера. 5. Запрос уже был послан, а событие COMPLETE, которое выполняется только после окончательной загрузки XML ещё не было выполнено. 6. В результате ошибка, видео-плеер не получил УРЛ. Добавлено через 6 минут Т.е. я хочу сказать, что запрос на получение URL из класса "А" к классу "Б", отправляется раньше, чем класс "Б" успевает получить отдаваемый классу "А" урл с из XML файла загружаемого с сервера. |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Переделайте алгоритм. Не стоит подстраивать язык под свои нужды, идущие вразрез с концепцией языка.
__________________
#flasher@irc.trg.ru:6667 |
|
|||||
Дак не посылайте запрос сразу же, доступ к плайлисту из плеера у вас есть, дождитесь пока плэйлист загрузится, тогда и посылайте запрос, в чем проблема то?
__________________
O God! The Aftermath. |
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
Честно говоря не вижу разреза с концепцией. Это ООП, тем самым язык должен позволять мне отделять сущности друг от друга. Сущность загрузчика и парсера XML, очень четко отделяется от сущности класса (обьекта) видео-плеера.
|
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
Цитата:
Добавлено через 1 минуту Можно ли посмотреть, как это реализовать в коде? А то очень плохо въезжаю, новичек ещё. |
Часовой пояс GMT +4, время: 05:01. |
|
« Предыдущая тема | Следующая тема » |
|
|