Flex addEventListener - как обновить экран во время вызываемого события? - PullRequest
0 голосов
/ 13 сентября 2011

Кажется, я не могу найти ответ на то, что, на мой взгляд, было обычной проблемой.

Что я хочу сделать, это: 1. Показать диалог открытия файла 2. Обработать выбранный файл 3. Во время обработки файла сообщите о ходе работы пользователю

У меня определен файл, и я использую browseForOpen и AddEventListener:

public var fileInput:File = new File();
fileInput.browseForOpen("Open file",[filter]); 
fileInput.addEventListener(Event.SELECT, onFileSelect);

// Step 2 - function gets called to process the file
private function onFileSelect(e:Event):void
{
    // Step 3 - do some processing, and at intervals report progress to the screen
}

Моя проблема в том, что любые изменения на экране в приемнике событий не будут выполнены, пока функция не будет завершена.

Любая помощь будет оценена, Спасибо

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

На шаге 3, если вы выполняете какую-то интенсивную работу с процессором (например, анализ огромного XML-кода), возможно, вы столкнулись с проблемой НЕ обновлять.Поскольку Flex является однопоточным, вам лучше использовать концепцию Green Threading .

. Вы можете прочитать о Green Threading здесь .

0 голосов
/ 13 сентября 2011

Возможно, запустите таймер и дайте ему проверить состояние переменной (которая обозначает ход обработки) как отдельную выполняемую функцию, которая не будет предрасположена к ожиданию родительской функции.

[чтобы быть ясным, я говорю, вызовите отдельную функцию из таймера.]

Но я склонен согласиться с Flextras.com в том, что в большинстве случаев, когда я делал это, обработка составляла миллисекунды, поэтому просто не было видно.

...