Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.07.2010, 15:54
vasya87 вне форума Посмотреть профиль Отправить личное сообщение для vasya87 Найти все сообщения от vasya87
  № 1  
Ответить с цитированием
vasya87
 
Аватар для vasya87

Регистрация: Jan 2010
Адрес: Кривой Рог
Сообщений: 117
По умолчанию сигнал о завершении события

здравствуйте. извращаюсь на предмет ООП. предположим, есть такой код:

Код AS3:
var response:XML;
 
public static function f1() {
	//other code
	var request:URLRequest = new URLRequest("...");
	var loader:URLLoader = new URLLoader();
	loader.load(request);
	loader.addEventListener(Event.COMPLETE, f2);
}
 
public static function f2(e:Event) {
	response = new XML(e.target.data);
}
мне нужно получить response из функции f1. то есть понятно, что если я вставлю
Код AS3:
return response;
в конец f2, то оно выдаст результат, а если в конец f1, то придёт пустой ответ, так как f2 ещё не выполнилось. но в сложившейся ситуации мне нужен ответ как раз из f1...
возможно ли из этой функции как-то выловить завершение f2, чтобы получить ответ?

Старый 23.07.2010, 16:01
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 2  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Да, конечно.
Ставьте в f1 цикл while(!JesusChristСoming), в котором проверяйте флаг получения ответа в f2, как только он выставится в true, возвращайте свой response

Но мне кажется, это форменное извращение

Старый 23.07.2010, 16:02
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
mikhailk, во флеше всего один поток на ActionScript.

Старый 23.07.2010, 16:02
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Event.COMPLETE никак не может обработаться до того, как завершится вызов f1, в которой был для него создан обработчик.
Так что ответ скорее нет. Не однозначно нет, т.к. f2 может вызывать f1, но через это место - сложнее и никому не надо.

Старый 23.07.2010, 16:05
vasya87 вне форума Посмотреть профиль Отправить личное сообщение для vasya87 Найти все сообщения от vasya87
  № 5  
Ответить с цитированием
vasya87
 
Аватар для vasya87

Регистрация: Jan 2010
Адрес: Кривой Рог
Сообщений: 117
Цитата:
while(!JesusChristСoming)
боюсь, из-за этого Вселенная повиснет)

Старый 23.07.2010, 16:06
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
Сообщение от etc Посмотреть сообщение
mikhailk, во флеше всего один поток на ActionScript.
Вообще-то, да.
Значит нельзя.

Старый 23.07.2010, 17:06
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 7  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Код AS3:
public class XMLContainer{
      public var data:XML;
 
      public function XMLContainer(){
      }
}
 
//............
 
private static var _response:XMLContainer=new XMLContainer();
 
public static function f1():XMLContainer {
	//other code
	var request:URLRequest = new URLRequest("...");
	var loader:URLLoader = new URLLoader();
	loader.load(request);
	loader.addEventListener(Event.COMPLETE, f2);
        return _response;
}
 
public static function f2(e:Event) {
	_response.data = new XML(e.target.data);
}
Вы возвращаете объект response класса XMLContainer. Потом этому объекту передаёте значение подгруженного XMLa.
__________________
ranga


Последний раз редактировалось incvizitor; 23.07.2010 в 17:13.
Старый 23.07.2010, 17:15
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
incvizitor, а если надо здесь и сейчас?

Старый 23.07.2010, 17:21
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 9  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
etc, я показал как можно решить для некоторых ситуаций. Я же не знаю что именно нужно топикстартеру.
__________________
ranga

Старый 23.07.2010, 17:35
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 10  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
я так понимаю, топикстартер хочет написать класс доступа к внешним ресурсам, который возвращал бы результат в том же методе, которым осуществляется доступ. Чтобы избавиться от событийной модели.

Если у него получится, я тоже попользуюсь.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.