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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.05.2007, 15:45
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 1  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
По умолчанию Как вернуть строку из URLLoader

Уважаемые форумчане, помогите мне пожалуйста!

Я, наверное, чего-то не понимаю, но почему в следующем коде я никак не могу получить строку на выходе???

Код:
function textLoader():String
		{
			var loader:URLLoader = new URLLoader();
			var resultText: String = "";
            var request:URLRequest = new URLRequest("Texts\\umatch35.txt");
            try
			{
				loader.load(request);
			}
			catch (error:Error)
			{
				trace("Unable to load requested document.");
            }
			loader.addEventListener(Event.COMPLETE, completeHandler);
			
			function completeHandler(event:Event):void
			{
				resultText = loader.data;
				//trace(resultText);
				
				//
			}
			//trace(resultText);
			return resultText;
			
        }
судя по сообщениям trace,сначала обрабатывается команда return, а только потом срабатывает функция completeHandler... В итоге resultText = пусто. Народ, как полечить или может быть я сам дурак? Тогда подскажите где?

Заранее спасибо!


Последний раз редактировалось vvk80; 28.05.2007 в 16:07.
Старый 28.05.2007, 15:56
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 2  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
всё правильно.
Функция textLoader, не дождавшись окончания загрузки возвращает ничего.

Загрузка файла происходит не моментально, а Action Script исполняется в одном потоке.
Функция completeHandler будет вызвана по окончании загрузки файла.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 28.05.2007 в 15:59.
Старый 28.05.2007, 16:00
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 3  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
Цитата:
Сообщение от miramax
всё правильно.
Загрузка файла происходит не моментально, а
Action Script исполняется в одном потоке.
Функция completeHandler вызывается не моментально, а по окончании загрузки файла.
Спасибо! Это кстати фигово! Но как мне все-таки строку то вернуть, я не хочу какждый раз эту функцию копировать (у меня порядка 20-ти лоадеров получится). Это вообще нарушит всякие принципы OOP программирования... Как мне все-таки строку вернуть? Ну не таймер же все-таки ставить? Наверняка месть дргйо способ..

Старый 28.05.2007, 16:03
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 4  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Зачем копировать?
Где нарушается ООП?
Для обработки данные нужно сначала загрузить.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Sep 2002
Сообщений: 30,787
vvk80, отредактируйте свой пост и оформите код тегами [code][/code].

Старый 28.05.2007, 16:06
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 6  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
Цитата:
Сообщение от miramax
Зачем копировать?
Где нарушается ООП?
Для обработки данные нужно сначала загрузить.
Наверное я туплю... Я понимаю, что данные надо сначала загрузить... Но подскажите мне, пожалуйста, как мне выкрутиться из текущей ситуации. Направьте меня в нужное русло!

Заранее спасибо!

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

Регистрация: Sep 2002
Сообщений: 30,787
Загрузка данных происходит асинхронно с кодом. Их невозможно вернуть сражу же после вызова load.

Старый 28.05.2007, 16:13
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 8  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Ну у тебя всё верно, кроме функции, которой ты захотел всё заинкапсулировать и моментально возвратить. Общий план такой:
Код:
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest('text.txt'));
loader.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler(e:Event):void
{
    trace(loader.data)
}
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

Старый 28.05.2007, 17:02
vvk80 вне форума Посмотреть профиль Отправить личное сообщение для vvk80 Найти все сообщения от vvk80
  № 9  
Ответить с цитированием
vvk80
[+3 09.12.07]

Регистрация: Oct 2006
Сообщений: 114
Цитата:
Сообщение от miramax
Ну у тебя всё верно, кроме функции, которой ты захотел всё заинкапсулировать и моментально возвратить. Общий план такой:
Код:
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest('text.txt'));
loader.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler(e:Event):void
{
    trace(loader.data)
}
Спасибо,miramax!
Пока обойдемся без инкапсуляции А потом я туда таймер запихну, который будет смотреть, когда переменная заполнится и возвращать ее... Хотя таймер ресурсы жрет дико... я тут решил картинки подвигать по таймеру, так у меня 100% загрузка процессора

Старый 29.05.2007, 02:26
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 10  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Какой таймер?
completeHandler это всё что нужно.
А чего-то двигать по экрану нужно по событию Event.ENTER_FRAME ...
Посмотри внимательнее примеры в хелпе.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

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

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


 


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


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