циклы as3 и слушатели событий - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть массив, который возвращает многомерные данные из базы данных mysql, когда она собирается, функция createNews создает пользовательский интерфейс. У меня проблема в том, что цикл повторяется быстрее, чем создается пользовательский интерфейс, есть ли способ использовать прослушиватели событий с циклами, чтобы он продолжался только после того, как моя функция завершила свою работу?

var t:Array = responds.serverInfo.initialData;  
for (var i:uint = 0; i < t.length; i++) {
    var date = t[i][1];
    var newstitle = t[i][2];
    var story= t[i][3];
    var image = t[i][4];

    createNews(date, newstitle, story, image);    
}

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

Разве ваша функция createNews не блокирует цикл, пока он не вернется? Actionscript является однопоточным, поэтому я не уверен, как цикл может продолжаться, когда функция createNews еще не завершена.

0 голосов
/ 14 апреля 2010

у вас может быть пользовательский обратный вызов, когда вы закончите создание элемента пользовательского интерфейса, который затем обработает следующий элемент в массиве.

var t:Array = responds.serverInfo.initialData;
var numProcessed:int = 0;

private function processNext() : void {
    if (numProcessed == t.length) return;
    var date = t[numProcessed][1];
    var newstitle = t[numProcessed][2];
    var story= t[numProcessed][3];
    var image = t[numProcessed][4];

    numProcessed++;

    createNews(date, newstitle, story, image);  
}

В зависимости от того, как работает ваша функция createNews и как все структурировано, ваш процесс вызова processNext после завершения пользовательского интерфейса будет отличаться. Я предполагаю, что createNews создаст новый класс или что-то еще, в этом случае вы присоедините слушатель события к этому новому классу, прослушивая событие COMPLETE, которое будет отправлено после завершения создания, и установив processNext в качестве обработчика события.

...