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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > Action script 2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.06.2004, 13:46
Eyfel вне форума Посмотреть профиль Отправить личное сообщение для Eyfel Посетить домашнюю страницу Eyfel Найти все сообщения от Eyfel
  № 1  
Eyfel

Регистрация: Apr 2004
Адрес: Россия, Санкт-Петербург
Сообщений: 46
Отправить сообщение для Eyfel с помощью ICQ
По умолчанию LoadVars и задерка получаения запроса?

Всем доброго времени суток!

Помогите пожалуйста разобраться, как сделать так, чтобы программа останавливалась на тот моммент, пока не получит значения в LoadVars.sendAndLoad - вот мой пример кода:

Метод:
Код:
	public static function invokeAction(actionParams:LoadVars, systemHost:String, movieForError:MovieClip){
		System.useCodepage;
		var resultXML = new XPathDocument();
		var errorMessage = new String();
		var xmlStr = new String();
		actionParams.sendAndLoad(systemHost+"/actionservlet/actionservlet.jsp", resultXML, "GET");
		stop();		
		trace("actionParams.getBytesLoaded()"+resultXML.getBytesLoaded());
		resultXML.onLoad = function(success){
			if(success){
				//Проверяем на ошибки
				errorMessage = resultXML.selectSingleNode("/ERROR/MESSAGE").stringValue();			
				if (errorMessage.length!=1){
				  xmlStr = resultXML.toString();
				  trace("AAAA");
				  return resultXML;
				} else{
				  movieForError._parent.systemMessage = errorMessage;
				  trace("BBBB");
				}
			} else{
				trace("CCCC");
				movieForError._parent.systemMessage = "Ошибка при выполнение запроса к серверу";
			}//if(success)
		}//resultXML.onLoad = function(success){
		trace("XMLSTR:"+xmlStr);
		trace("resultXML.toString():"+resultXML.toString());
	}
Вот как я его вызываю:
Код:
xmlStr = Action.invokeAction(actionParams, systemHost, rootMovie);
		var resultXML = new XPathDocument(xmlStr);
		trace("xmlStr.fillingDescriptionForAbility:"+resultXML);
И что я вижу после этого на экране:
actionParams.getBytesLoaded()0
XMLSTR:
resultXML.toString():
xmlStr.fillingDescriptionForAbility:
AAAA
тут идет содежрания полученного резаультат...

И вопрос, программа продолжает свое выполнение после вызова actionParams.sendAndLoad(systemHost+"/actionservlet/actionservlet.jsp", resultXML, "GET"); - вопрос как заставить ее не продолжать выполнение пока результат не будет получен?

Очень надо мож кто знает как такое сделать?
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья...

Старый 22.06.2004, 13:51
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 2  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
во флэш нельзя остановить поток исполнения,
поэтому с событиями нужно работать асинхронно - обработчики, подписка и тд,

Старый 22.06.2004, 13:56
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 3  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
а в целом все у вас правильно,

на самом деле блок onLoad выполняется не сразу, а после получения данных от сервера....

предполагаю что вас смущает трейс

trace("actionParams.getBytesLoaded()"+resultXML.getBytesLoaded());

лучше сначала описывать обработчик onLoad а только после этого делать sendAndLoad

Старый 22.06.2004, 14:02
Eyfel вне форума Посмотреть профиль Отправить личное сообщение для Eyfel Посетить домашнюю страницу Eyfel Найти все сообщения от Eyfel
  № 4  
Eyfel

Регистрация: Apr 2004
Адрес: Россия, Санкт-Петербург
Сообщений: 46
Отправить сообщение для Eyfel с помощью ICQ
"предполагаю что вас смущает трейс

trace("actionParams.getBytesLoaded()"+resultXML.getBytesLoaded());" - нет меня смушает не это...меня смущает то, что мне надо сделать так, чтобы запрос выполнялся последовательно?


" во флэш нельзя остановить поток исполнения,
поэтому с событиями нужно работать асинхронно - обработчики, подписка и тд," - и как тогда мне быть простите, я просто новичок пока во Флеше - я пишку сам на Java? Не могли бы вы объяснить по подробнее как мне тоды быть?
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья...

Старый 22.06.2004, 15:08
_zhloba вне форума Посмотреть профиль Отправить личное сообщение для _zhloba Посетить домашнюю страницу _zhloba Найти все сообщения от _zhloba
  № 5  
_zhloba

Регистрация: Apr 2004
Адрес: Минск
Сообщений: 176
function doSomething(){
// all you need to do is here
}

lv=new LoadVars();
lv.onload=function(success){
if(success){ doSomething(); }
else{trace("some error");}
}
lv.load("somedata.php");

stop();
__________________
Юра

Старый 22.06.2004, 16:42
Eyfel вне форума Посмотреть профиль Отправить личное сообщение для Eyfel Посетить домашнюю страницу Eyfel Найти все сообщения от Eyfel
  № 6  
Eyfel

Регистрация: Apr 2004
Адрес: Россия, Санкт-Петербург
Сообщений: 46
Отправить сообщение для Eyfel с помощью ICQ
мдя....усе через одно место делать надо =(

бум пробывать.... неужелди им сложно было сджелать чтобы синхронно выполнялись запросы?...
а то теперь придеться усе делать через setInterval() а иначе никак =(
т.к. мне ндоа чтобы запрос был исполнен, и только после этого програмама продолжала свое выполнение...

То есть сделать какую нить переменную, котирая будет в методе onLoad ставиться в true. а до тех пор ничгео не делать...
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья...

Старый 22.06.2004, 18:26
_zhloba вне форума Посмотреть профиль Отправить личное сообщение для _zhloba Посетить домашнюю страницу _zhloba Найти все сообщения от _zhloba
  № 7  
_zhloba

Регистрация: Apr 2004
Адрес: Минск
Сообщений: 176
Чесно говоря написал я ерунду.
Задача рутинная, втречается во всяком фильме с прелоадером и решается просто.
Код нужно разместить в двух кадрах (или сценах)

В первом кадре

lv=new LoadVars();
lv.onload=function(success){
if(success){ nextFrame(); }
else{trace("some error");}
}
lv.load("somedata.php");
stop();

Во втором кадре - весь остальной код

Фильм не перейдет во второй кадр, пока не окончиться загрузка данных.
В первом кадре можно разместить прелоадер
__________________
Юра

Старый 22.06.2004, 18:48
Eyfel вне форума Посмотреть профиль Отправить личное сообщение для Eyfel Посетить домашнюю страницу Eyfel Найти все сообщения от Eyfel
  № 8  
Eyfel

Регистрация: Apr 2004
Адрес: Россия, Санкт-Петербург
Сообщений: 46
Отправить сообщение для Eyfel с помощью ICQ
да это понятно, но у меня не на кадраз делается в внутри файла AS
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья...

Старый 25.06.2004, 23:05
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 9  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Дело в том, что флэш не компилирует каждый класс в отдельный файл как, к примеру, java. поэтому
Цитата:
но у меня не на кадраз делается в внутри файла AS
такого быть не может. Каждый включенный файл компилируется в тот же файл. А классы, кроме того, компилируются как отдельные мувиклипы.
__________________
судью - на мыло, из игроков - вить веревки.

Старый 26.06.2004, 18:38
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 10  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
почему нельзя останавливать поток исполнения (thread) во флэш,...
да потому что он один, во всяком для выполнения скрипта,

все просто -
вызвал загрузку и ждешь когда выполнится код в обработчике - в онлоад

можно в это время чем нибудь другим позаниматься
например, анимацию загрузки покрутить


Последний раз редактировалось john; 26.06.2004 в 18:39.
Создать новую тему   Часовой пояс GMT +4, время: 22:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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