PDA

Просмотр полной версии : Порядок выполнения функций


Ondyon
19.02.2003, 17:34
взял пример с чтением текстового файла через XML
проблема:
результат выполнения функции почему-то появляется
не сразу после ее выполнения а через неопределенное время
(точнее, когда выполнится хотя бы один Idle loop Windows)

#include "ldtxt.as" // взято с flasher.ru (attached)

function LoadText(fileName, textvar) {
textSource = new TextFile(true);
textSource.onLoad = function(ok) {
if (ok) {
set(textvar, this.content);
trace("in load");
} else {
set(textvar, "error loading file "+fileName);
}
};
trace("111");
textSource.load(fileName);
trace("222");
}

так вот, сначала печатается 111 потом 222
потом еще куча всего из разных кадров разных мувиков,
и только потом trace("in load").
при этом я не могу использовать результат
функции LoadText, поскольку результат
появляется уже после выполнения всей программы :((

как с этим бороться ?

llllllllll
19.02.2003, 17:58
... все так и есть, сначала "111", потом "222", так как textSource.load(fileName); дает команду грузить файл, а textSource.onLoad сработет только когда поступят данные, если тебе нада что-то впихнуть между трейсами - переписывай load ...

Ondyon
19.02.2003, 19:51
Дык, данные из файла берутся.
должны сразу поступать.

пробовал делать после load
while(data=="") {} //do nothing
виснет в бесконечный цикл

если вызов функции на кнопке в on(click)
а проверка данных on(release) - работает

если вызов в одном кадре
а результат в другом кадре мувика (например в 100ом!)
- данные пустые :((
похоже, функция запускается
в параллельном процессе и
данные поступают только
когда происходит ожидание
ввода пользователя Idle Loop или что-то в этом роде.

может быть, как-то можно в том бесконечном
цикле вместо do_nothing как-то заставить винду
продышаться и выполнить-таки функцию
типа Refresh какой-нибудь....

Nox Noctis
19.02.2003, 22:21
оххх... сколько же раз это уже было...

например (http://www.flasher.ru/forum/showthread.php?s=&threadid=39061&highlight=%2A%EF%EE%E4%EE%E6%E4%E0%F2%FC%2A)
смотри первые четыре поста
(потом пошел классический флуд имени лехаса и балтики :)) )

ты пропустил ожидание загрузки.
онЛоад там неспроста сделан -
абсолютно неизвестно сколько именно времени пройдет до полной загрузки данных