![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|
|
|||||
|
Всем доброго времени суток!
Помогите пожалуйста разобраться, как сделать так, чтобы программа останавливалась на тот моммент, пока не получит значения в 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"); - вопрос как заставить ее не продолжать выполнение пока результат не будет получен? Очень надо мож кто знает как такое сделать?
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья... |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
во флэш нельзя остановить поток исполнения,
поэтому с событиями нужно работать асинхронно - обработчики, подписка и тд, |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
а в целом все у вас правильно,
на самом деле блок onLoad выполняется не сразу, а после получения данных от сервера.... предполагаю что вас смущает трейс trace("actionParams.getBytesLoaded()"+resultXML.getBytesLoaded()); лучше сначала описывать обработчик onLoad а только после этого делать sendAndLoad |
|
|||||
|
"предполагаю что вас смущает трейс
trace("actionParams.getBytesLoaded()"+resultXML.getBytesLoaded());" - нет меня смушает не это...меня смущает то, что мне надо сделать так, чтобы запрос выполнялся последовательно? " во флэш нельзя остановить поток исполнения, поэтому с событиями нужно работать асинхронно - обработчики, подписка и тд," - и как тогда мне быть простите, я просто новичок пока во Флеше - я пишку сам на Java? Не могли бы вы объяснить по подробнее как мне тоды быть?
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья... |
|
|||||
|
Регистрация: 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();
__________________
Юра |
|
|||||
|
мдя....усе через одно место делать надо =(
бум пробывать.... неужелди им сложно было сджелать чтобы синхронно выполнялись запросы?... а то теперь придеться усе делать через setInterval() а иначе никак =( т.к. мне ндоа чтобы запрос был исполнен, и только после этого програмама продолжала свое выполнение... То есть сделать какую нить переменную, котирая будет в методе onLoad ставиться в true. а до тех пор ничгео не делать...
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья... |
|
|||||
|
Регистрация: Apr 2004
Адрес: Минск
Сообщений: 176
|
Чесно говоря написал я ерунду.
Задача рутинная, втречается во всяком фильме с прелоадером и решается просто. Код нужно разместить в двух кадрах (или сценах) В первом кадре lv=new LoadVars(); lv.onload=function(success){ if(success){ nextFrame(); } else{trace("some error");} } lv.load("somedata.php"); stop(); Во втором кадре - весь остальной код Фильм не перейдет во второй кадр, пока не окончиться загрузка данных. В первом кадре можно разместить прелоадер
__________________
Юра |
|
|||||
|
да это понятно, но у меня не на кадраз делается в внутри файла AS
__________________
... Все мы программисты с виду нормальные, но так до сих пор и не получили справку от психиатора об истинном состоянии здоровья... |
|
|||||
|
Дело в том, что флэш не компилирует каждый класс в отдельный файл как, к примеру, java. поэтому
Цитата:
__________________
судью - на мыло, из игроков - вить веревки. |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
почему нельзя останавливать поток исполнения (thread) во флэш,...
да потому что он один, во всяком для выполнения скрипта, все просто - вызвал загрузку и ждешь когда выполнится код в обработчике - в онлоад можно в это время чем нибудь другим позаниматься ![]() например, анимацию загрузки покрутить ![]() Последний раз редактировалось john; 26.06.2004 в 18:39. |
![]() |
Часовой пояс GMT +4, время: 22:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|